반응형
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
반응형
'Program Tip' 카테고리의 다른 글
프로세스를 X 번 실행하는 더 파이썬적인 방법 (0) | 2020.11.05 |
---|---|
접근성 : SVG 및 MathML에 권장되는 대체 텍스트 규칙? (0) | 2020.11.05 |
자식 뷰 컨트롤러의 topLayoutGuide (0) | 2020.11.05 |
Websocket 전송 안정성 (재 연결 중 Socket.io 데이터 손실) (0) | 2020.11.05 |
ReactJS-컴포넌트에 커스텀 이벤트 리스너 추가 (0) | 2020.11.05 |