Program Tip

Spring : 정적 필드에 값을 주입하는 방법은 무엇입니까?

programtip 2020. 11. 5. 18:53
반응형

Spring : 정적 필드에 값을 주입하는 방법은 무엇입니까?


이 수업으로

@Component
public class Sample {

    @Value("${my.name}")
    public static String name;


}

시도하면 Sample.name항상 'null'입니다. 그래서 저는 이것을 시도했습니다.

public class Sample {

    public static String name;

    @PostConstruct
    public void init(){
        name = privateName;
    }

    @Value("${my.name}")
    private String privateName;

    public String getPrivateName() {
        return privateName;
    }

    public void setPrivateName(String privateName) {
        this.privateName = privateName;
    }  

}

이 코드는 작동합니다. Sample.name제대로 설정되어 있습니다. 이것이 좋은 방법입니까? 그렇지 않다면 더 좋은 방법이 있습니까? 그리고 그것을하는 방법?


무엇보다도 필드가 public static아닌 final것은 사악하다 . Spring은 이유 때문에 그러한 필드에 주입을 허용하지 않습니다.

귀하의 해결 방법은 , 당신도 게터 / 세터가 필요하지 않습니다, 유효 private필드가 충분하다. 반면에 이것을 시도하십시오.

@Value("${my.name}")
public void setPrivateName(String privateName) {
    Sample.name = privateName;
}  

( @Autowired/ 와 함께 작동 @Resource). 하지만 건설적인 조언을 드리기 위해 private필드 대신 필드와 게터를 사용 하여 두 번째 클래스를 만드십시오 public static.

참고 URL : https://stackoverflow.com/questions/7253694/spring-how-to-inject-a-value-to-static-field

반응형