복붙노트

[SPRING] XML Bean은 Spring Boot 애플리케이션에 어디에 넣어야합니까?

SPRING

XML Bean은 Spring Boot 애플리케이션에 어디에 넣어야합니까?

나는 봄으로 돌아 간다 (현재 v4). @SpringBootApplication과 다른 주석을 사용하는 것이 좋지만 모든 문서에서 XML로 다른 bean을 정의하는 방법을 언급하는 것을 잊어 버릴 것 같습니다!

예를 들어 다음에서 정의 된 "SFTP 세션 팩토리"를 만들고 싶습니다.    http://docs.spring.io/spring-integration/reference/html/sftp.html

콩을 정의하기위한 XML의 멋진 비트가 있습니다. 그러나 지구상 어디에서 그것을 넣을 수 있습니까? 어떻게 연결합니까? 이전에 나는 :

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

파일 이름과 위치를 지정하지만 지금은 사용하려고합니다.

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

XML 파일은 어디에 두어야합니까? 그것을 부르기위한 마법의 봄 이름이 있습니까?

해결법

  1. ==============================

    1.@SpringBootApplication을 사용하는 것처럼 보이는 기본 @Configuration 클래스로 시작하는 한 @ImportResource 주석을 사용하여 XML 구성 파일을 포함 할 수 있습니다.

    @SpringBootApplication을 사용하는 것처럼 보이는 기본 @Configuration 클래스로 시작하는 한 @ImportResource 주석을 사용하여 XML 구성 파일을 포함 할 수 있습니다.

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

    2.또한 XML 구성을 Java 구성으로 변환 할 수 있습니다. 귀하의 경우 그것은 다음과 같습니다.

    또한 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 주석을 사용하여 클래스에 넣을 수 있습니다.

  3. ==============================

    3.봄 부팅 이상적인 개념은 XML 파일을 피할 수 있습니다. 하지만 xml bean을 유지하려면 @ImportResource ( "classPath : beanFileName.xml")를 추가하면됩니다.

    봄 부팅 이상적인 개념은 XML 파일을 피할 수 있습니다. 하지만 xml bean을 유지하려면 @ImportResource ( "classPath : beanFileName.xml")를 추가하면됩니다.

    spring-sftp-config.xml 파일을 제거하는 것이 좋습니다. 그리고이 파일을 Spring Annotation 기반 Bean으로 변환한다. 그래서 어떤 클래스가 bean으로 만들어 졌는지. 클래스 이름 앞에 @Service 또는 @Component 주석을 쓰면됩니다. 예 :

    XML 기반 :

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

    주석:

    @Service or @Component
    class Employee{
    }
    

    그리고 @ComponentScan을 추가하십시오 ( "패키지 이름 지정"). 이것이 최선의 방법입니다.

  4. from https://stackoverflow.com/questions/31677553/where-do-i-put-my-xml-beans-in-a-spring-boot-application by cc-by-sa and MIT license