Exception e
20
2019-04-17 18:40:08
1
181

스프링 리플렉션 사용할 시 @Autowired 질문드립니다.


안녕하세요.

어쩌다가 DB에 클래스 경로를 저장했다가 필요할때 불러서 각각의 클래스의 메서드를 호출해주면 좋겠다 싶어서 찾아보다가 리플렉션이라는것을 보고 활용해 보려고 하였습니다.


ArrayList<String> classList = new ArrayList<String>();

classList.add("com.park.service.One);

classList.add("com.park.service.Two");

classList.add("com.park.service.Three");


이런식으로 클래스 경로를 ArrayList에 담은 후에


for(int i=0; i<classList.size(); i++) {

Class cls = Class.forName(classList.get(i));

Object clsInstance = cls.newInstance();

System.out.println(clsInstance.getClass());

Method method = cls.getDeclaredMethod("showInteger");

method.invoke(clsInstance, new Object[]{}).toString();

}


이렇게 호출을 하였습니다.

위의 System.out.println(clsInstance.getClass());도 잘찍히고

메서드까지 호출이 잘 됩니다. 


그러나 에러가 발생하였는데요.

ArrayList에 담겨져 있는 각각의 클래스들에는

@Autowired로 의존성 주입을 받은 변수가 있는데 모두 null으로 처리되는것을 확인하였습니다.


선배님들의 지혜로 왜 그런지와 해결방법을 가르처 주시면 감사하겠습니다...







0
0
  • 답변 1

  • 배우고싶은이
    731
    2019-04-17 18:58:01
    ㅠㅠ. 스프링이 객채 생성시에 인젝트 하는건데 직접 객채를 생성하셨으니 안되겠죠.
    다른 방법을 쓰세요.
    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.