1. 程式人生 > >有個傻子非要讓我寫篇文章,給她講講AOP、IOC在專案中怎麼用。

有個傻子非要讓我寫篇文章,給她講講AOP、IOC在專案中怎麼用。

AOP:面向切面程式設計

  • SpringMVC元件註解的方式

    > @ControllerAdvice是一個@Component,用於定義@ExceptionHandler,@InitBinder和@ModelAttribute方法,適用於所有使用@RequestMapping方法。
    
        package com.zero.jimu.utils.exception.error;
        
        import com.zero.jimu.utils.IpAddrUtil;
        import org.slf4j.Logger;
        import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Date; /** * 全域性異常資訊捕獲 */ @ControllerAdvice public class GlobalExceptionHandler implements HandlerExceptionResolver { private static final Logger logger =
    LoggerFactory.getLogger(GlobalExceptionHandler.class); @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { if (handler instanceof HandlerMethod) { // 遠端訪問IP String ip = IpAddrUtil.getIpAddr(request); HandlerMethod handlerMethod = (HandlerMethod) handler; String className = handlerMethod.getBeanType().getName(); String methodName = handlerMethod.getMethod().getName(); StringWriter sw = new StringWriter(); ex.printStackTrace(new PrintWriter(sw, true)); System.out.println("遠端訪問IP======"+ip); System.out.println("類名========"+className); System.out.println("方法名======="+methodName); System.out.println("ExceptionType======"+ex.getClass().getSimpleName()); System.out.println("ExceptionMsg======"+sw.toString()); System.out.println("當前時間======"+new Date()); } return new ModelAndView("/error500/error"); } }

IOC:控制反轉,也可以稱為依賴倒置

看了網上很多的回答,羅裡吧嗦的。其實很簡單,一句話就是,你不再需要通過new物件來獲取物件了,而是直接通過注入的方式將整個物件拿來使用。@Autowired這個總該認識吧!