Non Component class 에서 @Autowired 필드 주입, 생성자 주입
2019. 11. 28. 19:40ㆍ카테고리 없음
필드 주입은 Non Component class 에서 @Autowired 받을 수 없다.
public class MyClassSerializer extends JsonSerializer<MyClass> {
@Autowired
private static MyService myService;
@Override
public void serialize(List<MyClass> myClass, JsonGenerator jgen, SerializerProvider serializers) throws IOException {
System.out.println(myService); // null
jgen.writeStartObject();
//…
jgen.writeStartObject();
}
}
생성자 주입은 Non Component class 에서도 @Autowired 받을 수 있다.
public class MyClassSerializer extends JsonSerializer<MyClass> {
private static MyService myService;
public MyClassSerializer(@Autowired MyService myService) {
MyClassSerializer.myService = myService;
}
@Override
public void serialize(List<MyClass> myClass, JsonGenerator jgen, SerializerProvider serializers) throws IOException {
System.out.println(myService); // exist
jgen.writeStartObject();
//…
jgen.writeStartObject();
}
}
어떤 차이 때문에 결과가 달리 나오는걸까?