복붙노트

[SPRING] Spring : @Bean은 @Configuration 없이도 작동 할 수 있습니다.

SPRING

Spring : @Bean은 @Configuration 없이도 작동 할 수 있습니다.

https://projects.spring.io/spring-framework/에서 봄 프레임 워크 hellpworld 프로그램이 있습니다. @Configuration 주석을 삭제합니다. 그러나 프로그램은 이전과 같이 계속 실행될 수 있습니다. 왜? @Configuration 역할은 무엇입니까?

해결법

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

    1.@Bean 인스턴스가 프로그램 할 수 있도록 @Component로 클래스를 표시 할 수 있습니다. 그렇게하면 라이트 모드라고합니다. 이 모드에서는 'bean 간 참조'를 사용할 수 없으며 메소드를 통해 다른 인스턴스를 참조합니다.

    @Bean 인스턴스가 프로그램 할 수 있도록 @Component로 클래스를 표시 할 수 있습니다. 그렇게하면 라이트 모드라고합니다. 이 모드에서는 'bean 간 참조'를 사용할 수 없으며 메소드를 통해 다른 인스턴스를 참조합니다.

    반면 @Configuration 클래스의 @Bean은 사이드 cglib 래퍼에 래핑됩니다.이 래퍼에서는이 빈 메서드에 대한 호출을 가로 채고 Bean 인스턴스를 컨텍스트에서 반환 할 수 있습니다. 당신은 '빈 간 참조'를 사용할 수 있습니다.

    http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html

    과, @Configuration은 다른 주석을 결합하여 다른 많은 기능을 사용할 수있는 기능을 제공합니다.

    다른 설정 가져 오기 @Import (DatabaseConfig.class)

    리소스 가져 오기 @PropertySource ( "classpath : config.properties")

    구성 요소 검사 사용 @ComponentScan (basePackages = { "com.sample. *"})

    프로파일 @Profile ( "생산") 표시

    @Enablexxxx 기능을 사용하려면

    http://docs.spring.io/spring-framework/docs/4.0.4.RELEASE/javadoc-api/org/springframework/context/annotation/Configuration.html

  2. ==============================

    2.Spring Framework 4.3.17.RELEASE를 사용하고 있습니다.

    Spring Framework 4.3.17.RELEASE를 사용하고 있습니다.

    ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
    

    AppConfig는 @configuration 주석을 달지 않습니다.

    @ComponentScan(basePackages={"tn.esprit.repository", "tn.esprit.service", "tn.esprit.conf"})
    @Import(DataConf.class)
    @EnableTransactionManagement
    //@Transactional
    public class AppConfig {
    

    @ComponentScan과 @import는 @configuration없이 잘 작동합니다. 설명이 뭐야? 이것은 4.3 버전에만 해당됩니까?

  3. from https://stackoverflow.com/questions/40256702/spring-bean-can-still-work-without-configuration by cc-by-sa and MIT license