냘로하
155
2020-09-21 14:20:47
7
204

dao를 null로 호출...하려고 하네요 ㅠㅠ 모르겠습니다.


안녕하세요.

개인 플젝으로 페이지를 만들어보려고 하는데 처음보는 오류에서 한참동안 막혀서 문의해보려고 글을 올려봅니다.


오류 내용..으윽..ㅠㅠ

java.lang.NullPointerException: Cannot invoke "com.board.dao.BoardDao.listboard(com.board.dto.BoardDto)" because "this.dao" is null
	at com.board.service.BoardService.listboard(BoardService.java:19)
	at com.board.controller.BoardController.boardlist(BoardController.java:25)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1626)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Unknown Source)

컨트롤러

@Controller
public class BoardController {
	
	@Autowired
	BoardService service;
	
	
	@RequestMapping("/board")
	public ModelAndView boardlist (ModelAndView mv ,BoardDto dto) {
		System.out.println("boardlist 메소드 진입하였습니다.");
		
		System.out.println(dto+"dto안의 값입니다.");
		List<BoardDto> dtolist = service.listboard(dto);
		mv.addObject("boardlist", dtolist);
		mv.setViewName("boardlist");
		return mv;
	}
}

서-비~스

@Service
public class BoardService {
	
	@Autowired
	BoardDao dao;

	public List<BoardDto> listboard(BoardDto dto) {
		System.out.println("boardservice의 boardlist도착");
		List<BoardDto> result = dao.listboard(dto);
		return result ;
	}
	
	
	

}


 DAO단 

public class BoardDao extends SqlSessionDaoSupport{
	
	@Autowired
	SqlSessionTemplate session;

	public List<BoardDto> listboard(BoardDto dto) {
		System.out.println("dao 도착했습니다.");
		List<BoardDto> result = session.selectList("boarddate.listboard", dto);
		return result;
	}

}

이렇게 작성을 했는데.. this.dao를 호출하려고 합니다... 어느쪽에서 호출하려고 시도해서 이러는건가요??

몰라서 궁금한것도 생기는데 오류에 막혀버려 진행을 못하니까 이거 기분이 이상합니다 하핳...


0
  • 답변 7

  • blgrm
    36
    2020-09-21 14:30:09

    의존성 주입이 제대로 수행되었는지가 먼저 확인되어야 할것 같습니다.

    dao 객체가 빈으로 등록이안되었다면 서비스단에서 dao 의 메서드 호출시 null 포인터 예외가 발생하겠죠?

  • 냘로하
    155
    2020-09-21 14:32:36

    blgrm 

    감사합니다! dao가 빈으로 등록되지 않아서 그럴수 있다는 내용이네요! 해당내용 확인해서 해서 천천히 뜯어먹고 오겠습니다~! 

  • 냘로하
    155
    2020-09-21 14:35:12

    보니까 A short-cut alternative to a nested "<ref bean='...'/>".

     이런 오류를 뿜고 있었네요. 찬찬히 찾아보겠습니다. 감사합니다~!
  • 냘로하
    155
    2020-09-21 14:47:44
    흑...빨간줄을 해결했지만 같은 오류를 뿜네요 ㅠㅠ....
  • blgrm
    36
    2020-09-21 17:51:09
    xml 에 의존성 관리하는방법도 가능하고
    annotation 기반으로 관리하실수도있는데요

    둘을 혼용하고계신것으로 보이네요?
    dao 클래스에 간단히  @component 혹은 @Repository 
    annotation 을 붙여보시고 다시해보시겠어요??
  • 냘로하
    155
    2020-09-21 18:15:45

    blgrm

    네 알겠습니다 한번 해 보겠습니다 피드백주셔서 넘나 감사합니다~!

  • 냘로하
    155
    2020-09-22 13:26:09

    blgrm 

    같은 오류가 발생되네요 ㅠㅠ 열심히 찾는중입니다. 

  • 로그인을 하시면 답변 을 등록할 수 있습니다.