我在哪里将我的XML bean放在Spring Boot应用程序中?

时间:2015-07-28 13:20:10

标签: xml spring spring-boot configuration-files

我回到春天(目前是第4版)。现在使用@SpringBootApplication和其他注释都很精彩,但所有文档似乎都忘记提及我如何用XML定义其他bean!

例如,我想创建一个" SFTP会话工厂"定义如下:    http://docs.spring.io/spring-integration/reference/html/sftp.html

有一些很好的XML来定义bean,但我在哪里放置它以及如何将其链接?以前我做过:

ApplicationContext context = new ClassPathXmlApplicationContext(
                "classpath:applicationContext.xml");

指定文件名和位置,但现在我尝试使用:

ApplicationContext ctx = SpringApplication.run(Application.class);

我在哪里放置XML文件?是否有一个神奇的春天名称来称呼它?

3 个答案:

答案 0 :(得分:36)

只要您开始使用基础@Configuration课程,这可能听起来与@SpringBootApplication一样,您可以使用@ImportResource注释来包含XML配置文件。

@SpringBootApplication
@ImportResource("classpath:spring-sftp-config.xml")
public class SpringConfiguration {
  //
}

答案 1 :(得分:3)

您还可以将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注释的类中。

答案 2 :(得分:0)

Spring boot的理想概念是避免使用xml文件。但是如果你想保留xml bean,你可以添加@ImportResource("classPath:beanFileName.xml")

我建议删除spring-sftp-config.xml文件。并且,将此文件转换为基于spring注释的bean。所以,无论什么类都被创建为bean。只需在课程名称前面写@Service@Component注释即可。例如:

基于XML:

<bean ID="id name" class="com.example.Employee">

注释:

@Service or @Component
class Employee{
}

并添加@ComponentScan("Give the package name")。这是最好的方法。