2017-02-23 1 views
0

저는 자바에 비교적 익숙하지 않고 웹 배경에서오고 있습니다. 스프링에서 웹 애플리케이션을 구현하려고합니다. enter image description here비 스프링 클래스에 스프링 컨텍스트 삽입하기

그리고 기본적으로, 지금까지의 내가 수단 내 수업을 인식하는 컨트롤러 폴더에있는 모든 클래스에 Spring 컨텍스트를 주입하는 것을 시도하고있다 :

주요 문제는 다음과 같은 폴더 구조를 가지고있다 Spring에 의존하지 않습니다.

응용 프로그램은 백엔드로하여 MongoDB를 사용하고,이 같은 맥락 instantinate하려고 :

WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); 

IODataInterface mongo = context.getBean(BookModel.class); 

나는 context.getBean (...) 라인이 예외 받고 있어요 : COM을. web.spring.Controllers.DemoController.DemoController (DemoController.java:19)

누군가 도움을 주시면 실제 도움이 될만한 사람이 있으면 실제 용어를 제대로 설명해 주시면 기쁘게 생각합니다. 0 Java 작업 경험을 가진 사람을 위해 꽤 진보 된 것들로 뛰어 들었다.

전체 예외 스택 :

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

그리고는 지금까지 내가 보는대로, 컨텍스트가 생성받을 것 같다,하지만의 getBean()이 작동하지 않습니다. 나는 지금 정말로 혼란 스럽다.

+1

전체 예외 사항 게시 및 컨트롤러가 이미 콩이어야하므로 정상적인 자동 와이어 링이 작동합니다. – Strelok

+0

autowiring에 대한 확실하지 않은 예외를 추가했습니다. 지금까지 실제로 컨텍스트가있는 것처럼 보이지만 getBean은 여전히 ​​작동하지 않습니다. BookModel은 applicationContext에서도 Bean으로 정의됩니다. 이것은 정말로 혼란 스럽다. –

답변

1

모델 클래스 (예 : @Document으로 주석 달기)의 인스턴스를 얻으려는 것 같습니다. MongoDb를 사용하고 있기 때문입니다. @Document 및 JPA @Entity 주석이 달린 클래스는 실제로 스프링 빈이 아닙니다.

새 인스턴스를 생성하려면 new BookModel()을 사용할 수 있습니다.

추신. 옆으로, 소문자 패키지/폴더 명명 규칙을 채택하십시오. 클래스 이름 만 대문자로 시작해야합니다.

+0

내 모델 클래스는 또한 MongoTemplate을 사용하여 더 이상 Bean없이 초기화하는 방법을 알지 못합니다. 이것에 대한 적절한 접근 방법은 무엇입니까? –

+0

데이터 레이어의 구현으로 모델을 연결하는 경우 좋은 디자인이 아닙니다. 이제는 MongoDb가 아닌 다른 개체에 개체를 저장해야한다고 상상해보십시오. MongoTemplate을 사용하는 경우 MongoTemplate을 삽입하여 사용하는 "서비스"레이어를 도입하십시오. 비즈니스 로직을 서비스에 유지하고 컨트롤러에 서비스를 주입하십시오. 또한 스프링을 사용하여 종속성을 모델 클래스에 삽입 할 수 없습니다. – Strelok

관련 문제