복붙노트

[SPRING] Spring : String Bean을 생성자에 삽입하는 방법은 무엇입니까?

SPRING

Spring : String Bean을 생성자에 삽입하는 방법은 무엇입니까?

나는 클래스를 가지고있다 Config :

Config.java

public class Config {
    private final String p = "Prop";

    @Bean
    public String getP(){return p;}
}

어떻게 이것을 생성자에 주입할까요?

public class SomeC {
    private String p;

    public SomeC(String p) {
        this. p = p;
    }
}

이 String p가 Config의 값을 주입하도록합니다. 그게 가능하니?

해결법

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

    1.빈의 이름을 정한 다음, autowiring으로 그 이름을 참조 할 때 @Qualifier 어노테이션을 사용해야한다.

    빈의 이름을 정한 다음, autowiring으로 그 이름을 참조 할 때 @Qualifier 어노테이션을 사용해야한다.

    예:

    Config.java

    public class Config {
        private final String p = "Prop";
    
        @Bean(name="p")
        public String getP(){return p;}
    }
    

    SomeC.java

    public class SomeC {
        private String p;
    
        @Autowired
        public SomeC(@Qualifier("p") String p) {
            this. p = p;
        }
    }
    
  2. ==============================

    2.다음과 같이 @Autowired를 사용해야합니다.

    다음과 같이 @Autowired를 사용해야합니다.

    @Autowired
    public SomeC(String p){
      this.p = p;
    }
    

    또는 이와 같이 :

    public class SomeC {
    
      @Autowired
      private String p;
    
    }
    

    나는 두 번째 접근법을 선호한다. 그러나 이것은 의존성을 외부에서 볼 수 없으므로 클래스를 테스트하기가 더 어렵 기 때문에주의해서 사용해야한다.

  3. from https://stackoverflow.com/questions/41570821/spring-how-to-inject-a-string-bean-to-the-constructor by cc-by-sa and MIT license