控制反轉,它表示讓容器管理對象,不用每次都本身取new對象。使用@Service和@Autowired提供和使用服務。session
例如:建立一個service包,其中第一deal類app
1 //@Service表示提供控制反轉服務 2 @Service 3 public class deal { 4 public String show() { 5 return "i show everything"; 6 } 7 }
其它地方,只須要聲明變量便可,不用new,比較簡單。例如:ui
1 @Autowired 2 private deal sss ; 3 @RequestMapping(path = {"/hello"}) 4 @ResponseBody 5 public String Hello_World() { 6 return "show: " + sss.show(); 7 }
顯示結果:spa
切面監控,能夠監控任何文件,目前廣泛用於日誌。日誌
例如,創建一個aspect包,建立一個LogAspect類:code
1 //表示這是面向切面的編程 2 @Aspect 3 //用於初始化 4 @Component 5 public class LogAspect { 6 //要使用org.slf4j的庫才行。 7 private static final Logger logger = org.slf4j.LoggerFactory.getLogger(LogAspect.class); 8 //Before表示執行一個文件以前的註解。在執行第一個*表示返回值能夠為任意的類型,第二個*表示任何以Controller結束的類。第三個*表示任何方法。 9 @Before("execution(* cn.scu.toutiao.controller.*Controller.*(..))") 10 //JointPoint是將切麵交互進行包裝的類。 11 public void BeforeMethod(JoinPoint joinPoint) { 12 StringBuilder sb = new StringBuilder(); 13 //getArgs獲取全部參數。 14 for (Object str : joinPoint.getArgs()) { 15 sb.append("arg:" + str.toString() + "|"); 16 } 17 logger.info("lala", new Date()); 18 logger.info("yes,before" + sb); 19 } 20 21 @After("execution(* cn.scu.toutiao.controller.indexController.*(..))") 22 public void afterMethod() { 23 logger.info("yes,after"); 24 } 25 }
這樣,只要*Controller文件運行,當訪問http://127.0.0.1:8080/profile/2/1?key=12334x&type=1時,日誌就會打印:對象
能夠在正文中定義Logger變量並使用:blog
1 private static final Logger logger = org.slf4j.LoggerFactory.getLogger(indexController.class); 2 //ioc,使用容器定義的對象,不用new。 3 @Autowired 4 private deal sss ; 5 6 @RequestMapping(path = {"/hello"}) 7 @ResponseBody 8 public String Hello_World(Model model, 9 HttpSession session) { 10 model.addAttribute("aaa", "naive"); 11 model.addAttribute("l", "<br/>"); 12 List<String> ls = Arrays.asList(new String[] {"1","111", "2323a"}); 13 model.addAttribute("liststring", ls); 14 model.addAttribute("user", new User("aw12")); 15 logger.info("yeah,finally i learn how to use logger"); 16 return "session" + session.getAttribute("msg") + sss.show(); 17 }
這樣配合LogAspect文件,就輸出成爲:get