Java 在Spring引导应用程序中,我应该将XML bean放在哪里?
我又回到了春天(目前是v4)。现在有了Java 在Spring引导应用程序中,我应该将XML bean放在哪里?,java,xml,spring,spring-boot,configuration-files,Java,Xml,Spring,Spring Boot,Configuration Files,我又回到了春天(目前是v4)。现在有了@SpringBootApplication和其他注释,一切都很棒,但是所有文档似乎都忘了提到我是如何用XML定义其他bean的 例如,我想创建一个“SFTP会话工厂”,定义如下: 有一个很好的XML来定义bean,但是我到底应该把它放在哪里,如何链接它呢?之前我做了一个: ApplicationContext context = new ClassPathXmlApplicationContext( "classpath:
@SpringBootApplication
和其他注释,一切都很棒,但是所有文档似乎都忘了提到我是如何用XML定义其他bean的
例如,我想创建一个“SFTP会话工厂”,定义如下:
有一个很好的XML来定义bean,但是我到底应该把它放在哪里,如何链接它呢?之前我做了一个:
ApplicationContext context = new ClassPathXmlApplicationContext(
"classpath:applicationContext.xml");
要指定文件名和位置,但现在我正在尝试使用:
ApplicationContext ctx = SpringApplication.run(Application.class);
我应该把XML文件放在哪里?是否有一个神奇的spring名称来命名它?只要您从一个基本的
@Configuration
类开始,听起来可能像是使用@SpringBootApplication
,您就可以使用注释来包含XML配置文件
@SpringBootApplication
@ImportResource("classpath:spring-sftp-config.xml")
public class SpringConfiguration {
//
}
您还可以将XML配置转换为Java配置。在您的情况下,它看起来像:
@Bean
public DefaultSftpSessionFactory sftpSessionFactory() {
DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory();
factory.setHost("localhost");
factory.setPrivateKey(new ClassPathResource("classpath:META-INF/keys/sftpTest"));
factory.setPrivateKeyPassphrase("springIntegration");
factory.setPort(22);
factory.setUser("kermit");
return factory;
}
您可以使用
@SpringBootApplication
注释将此方法放入类中。springboot的理想概念是避免使用xml文件。但如果您想保留XMLBean,只需添加@ImportResource(“classPath:beanFileName.xml”)
我建议删除spring sftp config.xml
文件。并且,将该文件转换为基于spring注释的bean。所以,创建为bean的任何类。只需在类名前写@Service
或@Component
注释即可。例如:
基于XML的:
<bean ID="id name" class="com.example.Employee">
并且,添加
@ComponentScan(“给出包名”)
。这是最好的方法。我是否必须将@ImportResource放在我编写的每个spring应用程序和测试用例的顶部,或者spring是否有一个默认名称/位置可以自动查找?@DavidNewcomb您只需要确保可以从配置根目录访问带有注释的配置类。如果您一直在使用它,您甚至可以为它添加自己的自动配置类。@DavidNewcomb您传统上只希望在应用程序中有一个@SpringBootApplication
,因为它本身是@Configuration
和其他一些必备功能的组合。你的@ImportResource
只需要在一个@Configuration
类上,该类由Spring扫描,就像在XML land中发生的自动扫描一样。你救了我一天。我读到Spring Boot
最擅长的一件事就是进行“配置”过程简单,可以使用它而不涉及任何配置xml
,但是xml
可以通过应用@bvulaj提到的内容加入配置过程。是否可以在不使用任何xml
的情况下完全配置我的应用程序?问题是“如何链接现有xml文件?”而不是“如何将所有bean转换为注释?”。您的答案与bvulaj的答案相同。如果您是pro annotation vs xml,请添加这是一条~comment~。顺便说一下,不是每个人都同意你的观点#只是说说而已,没什么。避免使用XML并不理想。我在XML上下文文件中有SQL、SAS脚本和字符串bean中的HTML块,利用上下文变量替换功能。添加@ImportResource(“classpath:beanFileName.XML”),而不是@ImportResource(“classpath:beanFileName.XML”)
@Service or @Component
class Employee{
}