필자는 내가 현재 가지고있는 회사의 기존 코드를 살펴 보았습니다. applicationContext.xml 파일에는 Bean으로 선언되었지만 DAO 클래스 자체에서 선언 된 UserDAO 클래스가 있습니다. DAF 클래스 자체의 인스턴스를 반환하는 getFromApplicationContext (ApplicationContext ctx)가 선언되었습니다. 나는이 방법이 어디서 불려지는지, 누가 그것을 부르고 있는지 이해할 수 없다. DAO 클래스가 HibernateDaoSupport 클래스를 확장하고 있습니다 삭제하면 이클립스의 컴파일러가 불평하지 않기 때문에 클래스에이 메소드를 만들어야한다는 것을 어떻게 알 수 있습니까? 내가 말하고자하는 것은이 메소드를 작성하도록 강제 할 인터페이스 또는 추상 클래스가 있어야한다는 것이다.
ApplicationContext (Spring)에서 선언 된 DAO 클래스
public static UserDAO getFromApplicationContext(ApplicationContext ctx) {
return (UserDAO) ctx.getBean("userDAO");
}
조금 설명 할 수있는 사람이 누구든지 바랍니다.
(CTRL + ALT + H) org.springframework.beans.factory.BeanFactory의 getBean (String)이이 메소드를 호출한다는 사실을 알게되었습니다. 그러나 왜 여전히 신비한 일인가. GlobalDataAceess 클래스는 그것에 삽입 된 UserDAO 빈을 사용하기 때문에. GlobalDataAccess 클래스는 또한 applicationContext에서 빈으로 선언되며 우리는 GlobalDataAccess를 호출하여 DAO를 가져오고 여기에서 메소드를 호출합니다. Beanactory가이 비밀스러운 방법을 호출하여 역할을 수행하는 곳. – user984281
DAO가 일부 인터페이스를 구현합니까? – Bozho
저는 Spring의 getBean 메소드가 리플렉션을 사용하지 않고이 메소드를 호출하는 방법을 실제로 알지 못합니다. 나는 Spring이 UserDAO 클래스를 종속성으로 가지고 있는지 의심 스럽다. –