원인 : UserDetailsService를 Implements 한 UserDetailServiceImpl 매소드중 로그인 실행시 실행 되는 loadUserByUsername 매소드의 반환 return new User(user.getUnm(), user.getPw(), authorities); 안에 파라미터가 하나라도 null 일시 생기는 오류
25-Jun-2021 15:14:57.721 심각 [http-nio-8080-exec-4] org.apache.catalina.core.StandardWrapperValve.invoke 경로 []의 컨텍스트 내의 서블릿 [dispatcher]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/views/template/template.jsp'.]을(를) 발생시켰습니다.
org.apache.tiles.template.NoSuchAttributeException: Attribute 'content' not found.
at org.apache.tiles.template.DefaultAttributeResolver.computeAttribute(DefaultAttributeResolver.java:50)
at org.apache.tiles.template.InsertAttributeModel.resolveAttribute(InsertAttributeModel.java:165)
at org.apache.tiles.template.InsertAttributeModel.execute(InsertAttributeModel.java:121)
at org.apache.tiles.jsp.taglib.InsertAttributeTag.doTag(InsertAttributeTag.java:299)
at org.apache.jsp.WEB_002dINF.views.template.template_jsp._jspx_meth_tiles_005finsertAttribute_005f1(template_jsp.java:283)
at org.apache.jsp.WEB_002dINF.views.template.template_jsp._jspService(template_jsp.java:157)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
========중략========
오류 정의 : 'content' Attribute 된 프로퍼티가 없어서 생긴 문제.
tlies를 설정한 .xml 의 definition 프로퍼티 중 content가 다 들어가있는지 확인하자
org.springframework.aop.AopInvocationException: Null return value from advice does not match primitive return type for: public int com.koreait.alsamo.user.UserService.join(com.koreait.alsamo.user.UserEntity) throws javax.mail.MessagingException,java.io.UnsupportedEncodingException
at org.springframework.aop.framework.CglibAopProxy.processReturnType(CglibAopProxy.java:395)
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:694)
at com.koreait.alsamo.user.UserService$$EnhancerBySpringCGLIB$$eb198eb.join(<generated>)
at com.koreait.alsamo.user.UserController.join(UserController.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
--- 중략 ---
void 매소드가 아닌 return 값이 있는 매도스 위에 사용 할때 뜨는 오류
@Async 애노테이션 사용 할때는 void매소드 위에 할 때 제일 좋고 리턴값이 필요할딴 Furture 처리를 해야한다.
Solution
public int join(UserEntity param) throws MessagingException, UnsupportedEncodingException
int(return 값 필요) -> void
public void join(UserEntity param) throws MessagingException, UnsupportedEncodingException