写点什么

spring aop 的五大通知类,java 从入门到精通 pdf 百度云

作者:MySQL神话
  • 2021 年 11 月 27 日
  • 本文字数:2151 字

    阅读完需:约 7 分钟

<dependency>


<groupId>junit</groupId>


<artifactId>junit</artifactId>


<version>4.12</version>


</dependency>


<dependency>


<groupId>org.springframework</groupId>


<artifactId>spring-test</artifactId>


<version>5.1.5.RELEASE</version>


</dependency>


<dependency>


<groupId>cglib</groupId>


<artifactId>cglib</artifactId>


<version>3.1</version>


</dependency>


<dependency>


<groupId>org.aspectj</groupId>


<artifactId>aspectjweaver</artifactId>


<version>1.9.2</version>


</dependency>


</dependencies>


</project>


applicationContext.xml


<?xml version="1.0" encoding="UTF-8"?>


<beans xmlns="http://www.springframework.org/schema/beans"


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


xmlns:context="http://www.springframework.org/schema/context"


xmlns:aop="http://www.springframework.org/schema/aop"


xsi:schemaLocation="


http://www.springframework.org/schema/aop


https://www.springframework.org/schema/aop/spring-aop.xsd


http://www.springframework.org/schema/context


https://www.springframework.org/schema/context/spring-context.xsd


http://www.springframework.org/schema/beans


https://www.springframework.org/schema/beans/spring-beans.xsd">


<context:component-scan base-package="com.xbj"/>


<aop:config proxy-target-class="true">


<aop:aspect ref="myAdvices">


<aop:pointcut id="pc" expression="execution(* com.xbj.service.impl..(..))"/>


<aop:before method="before" pointcut-ref="pc" />


<aop:after-returning method="afterRunturn" pointcut-ref="pc" />


<aop:after method="afterfinally" pointcut-ref="pc" />


<aop:around method="around" pointcut-ref="pc" />


<aop:after-throwing method="afterThorw" pointcut-ref="pc" throwing="ex" />


</aop:aspect>


</aop:config>


</beans>


UserController.java


package com.xbj.controller;


import com.xbj.service.UserService;


import org.springframework.beans.factory.annotation.Autowired;


import org.springframework.stereotype.Controller;


/**


  • @Author:晓宇码匠

  • @Date:2019/6/15 0015


*/


/* @Controller @Repository @Component @Service 都是将 bean 放入 Ioc 容器中,只是为了代码的可读性而去区别开


  • @Autowired 是从 Ioc 容器拿对象

  • */


@Controller


public class UserController {


@Autowired


private UserService userService;


public void addUser(){


userService.addUser();


}


}


UserDao.java


package com.xbj.dao;


/**


  • @Author:晓宇码匠

  • @Date:2019/6/15 0015


*/


public interface UserDao {


void addUser();


void delUser();


}


UserDaoImpl.java


package com.xbj.dao.impl;


import com.xbj.dao.UserDao;


import org.junit.runner.RunWith;


import org.springframework.stereotype.Repository;


import org.springframework.stereotype.Service;


/**


  • @Author:晓宇码匠

  • @Date:2019/6/15 0015


*/


@Repository


public class UserDaoImpl implements UserDao {


public void addUser() {


System.out.println("addUser");


}


public void delUser() {


System.out.println("delUser");


}


//定义初始化方法


public void myInit(){


System.out.println("init...");


}


//定义销毁方法


public void dest(){


System.out.println("dest...");


}


}


UserService.java


package com.xbj.service;


/**


  • @Author:晓宇码匠

  • @Date:2019/6/15 0015


*/


public interface UserService {


void addUser();


void delUser();


}


UserServiceImpl.java


package com.xbj.service.impl;


import com.xbj.dao.UserDao;


import com.xbj.service.UserService;


import org.springframework.beans.factory.annotation.Autowired;


import org.springframework.stereotype.Service;


/**


  • @Author:晓宇码匠

  • @Date:2019/6/15 0015


*/


@Service


public class UserServiceImpl implements UserService {


@Autowired


private UserDao userDao;


public void addUser() {


userDao.addUser();


}


public void delUser() {


userDao.delUser();


}


}


MyAdvices.java


package com.xbj;


import org.aspectj.lang.JoinPoint;


import org.aspectj.lang.ProceedingJoinPoint;


import org.springframework.stereotype.Component;


/**


  • @Author:晓宇码匠

  • @Date:2019/6/15 0015


*/


/*


  • 注意类的包名

  • */


@Component


public class MyAdvices {


//前置通知


public void before(JoinPoint joinpoint){


System.out.println("前置通知");


}


//正常放回通知


public void afterRunturn(JoinPoint joinpoint){

独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!



![image](https://upload-images.jianshu.io/upload_images/22


《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享


932333-ac8e240b5d17e1b7.image?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



Java 面试准备

准确的说这里又分为两部分:


  1. Java 刷题

  2. 算法刷题


Java 刷题:此份文档详细记录了千道面试题与详解;




本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

用户头像

MySQL神话

关注

还未添加个人签名 2021.11.12 加入

还未添加个人简介

评论

发布
暂无评论
spring aop的五大通知类,java从入门到精通pdf百度云