以前定義統一異常處理類DemoExceptionResolver和切面定義LogAspectj都是配置文件進行配置。html
使用@Component表示類,讓<context:component-scan base-package="com.company"/>掃入spring容器。git
@Aspect
@Component
public class LogAspectj {
private static final Logger LOGGER = LoggerFactory.getLogger(LogAspectj.class);
@AfterReturning(value = "@annotation(com.company.aspectj.Log)",returning = "ret")
public void LogAfterReturning(JoinPoint joinPoint,Object ret){
Object[] args = joinPoint.getArgs();
LOGGER.info("方法入參:{}",args);
LOGGER.info("返回值:{}",ret);
}
}
@Component
public class DemoExceptionResolver implements HandlerExceptionResolver {
private static final Logger LOG = LoggerFactory.getLogger(DemoExceptionResolver.class);
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex){
response.setHeader("Content-type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter pw = null;
try {
pw = response.getWriter();
} catch (IOException e) {
LOG.error(e.getMessage(),e);
}
if (ex instanceof DemoException) {
pw.write(ex.getMessage());
} else {
pw.write("系統異常,請聯繫管理員");
}
return new ModelAndView();
}
}
同時將spring-mvc.xml相關配置去掉。github
以前其餘module下的配置文件是在web.xml配置classpath*:spring-*.xml進加載。web
使用import標籤進行導入。redis
<servlet>
<description>spring mvc servlet</description>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring-mvc.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--spring-mvc組件默認配置+啓動註解等等-->
<mvc:annotation-driven/>
<context:component-scan base-package="com.company"/>
<!--@aspectj啓動,子類代理-->
<aop:aspectj-autoproxy proxy-target-class="true"/>
<!--spring最多加載一個context:property-placeholder-->
<!--若是去掉jdbc.properties加載,demo-web啓動會提示找不對應變量值-->
<context:property-placeholder location="classpath:redis.properties,classpath*:jdbc.properties"/>
<!--將spring-redis引入spring中-->
<import resource="spring-redis.xml"/> <import resource="spring-mybatis.xml"/>
demo-base子工程下原來的代碼中包名進行修改:將demo=>company。spring
demo工程地址spring-mvc