# day04_springAOP01
**Repository Path**: JavaObjects/day04_springAOP01
## Basic Information
- **Project Name**: day04_springAOP01
- **Description**: 注解配置
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-10-14
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AOP注解配置
### 前置通知
#### 1.导入对应的jar包 并添加到内路径

#### 2. aop包内的Java代码准备就位
```Java
package aop;
public class DeptDaoImpl implements IDeptDao {
public DeptDaoImpl()
{
System.out.println("new DeptDaoImpl() 实例化");
}
@Override
public void selectDept() {
//System.out.println("DeptDaoImpl.selectDept()............日志记录开始");
System.out.println("DeptDaoImpl.selectDept..........软件开发事业部11111");
//System.out.println("DeptDaoImpl.selectDept()............日志记录结束");
}
@Override
public boolean insertDept(String deptname) {
//System.out.println("DeptDaoImpl.insertDept("+deptname+")............日志记录开始");
System.out.println("DeptDaoImpl.insertDept("+deptname+")");
//System.out.println("DeptDaoImpl.insertDept()............日志记录开始,返回结果:" + true);
return true;
}
}
```
```Java
package aop;
public interface IDeptDao {
public void selectDept();
public boolean insertDept(String deptname);
}
```
```Java
package aop;
public interface IUserDao {
public void selectUser();
public boolean insertUser(String username);
}
```
```Java
package aop;
public class UserDaoImpl_2 implements IUserDao {
public UserDaoImpl_2()
{
System.out.println("new UserDaoImpl_2() 实例化");
}
@Override
public void selectUser() {
//System.out.println("UserDaoImpl_2.selectUser()............日志记录开始");
System.out.println("UserDaoImpl_2.selectUser..........玉艺22222");
//System.out.println("UserDaoImpl_2.selectUser()............日志记录结束");
}
@Override
public boolean insertUser(String username) {
//System.out.println("UserDaoImpl_2.insertUser("+username+")............日志记录开始");
System.out.println("UserDaoImpl_2.insertUser("+username+")");
//System.out.println("UserDaoImpl_2.insertUser()............日志记录开始,返回结果:" + true);
return true;
}
}
```
```Java
package aop;
public class UserDaoImpl implements IUserDao {
public UserDaoImpl()
{
System.out.println("new UserDaoImpl() 实例化");
}
@Override
public void selectUser() {
//System.out.println("UserDaoImpl.selectUser()............日志记录开始");
System.out.println("UserDaoImpl.selectUser..........杰成11111");
//System.out.println("UserDaoImpl.selectUser()............日志记录结束");
}
@Override
public boolean insertUser(String username) {
//System.out.println("UserDaoImpl.insertUser("+username+")............日志记录开始");
System.out.println("UserDaoImpl.insertUser("+username+")");
//System.out.println("UserDaoImpl.insertUser()............日志记录开始,返回结果:" + true);
return true;
}
}
```
#### applicationContext.xml配置

```xml
Title: LogAdvice
** Description: * 切面(ascpet) = 切入点(pointCut) + 通知(advice) * * 切入点(@Pointcut):修饰的方法不需要返回值,不需要参数,仅作为一个切入点的标记 * * 通知(advice) * 前置通知:@Before,在调用方法之前执行的代码 *
* @author xianxian * @date 2019年10月14日 */ @Aspect public class LogAdvice { @Pointcut("execution(* aop.*.select*(..)) || execution(* aop.*.insert*(..))") public void method() {} @Before("method()")//在调用方法之前执行代码 public void logBefore() { System.out.println("日志记录............................前置通知【调用方法之前执行的代码】,例如:权限控制................"); } } ``` ```Java package aop; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args){ //1.加载并且解析applicationContext.xml //积极加载,在加载与解析xml的同时,即完成所有bean的实例化 ClassPathXmlApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml"); System.out.println("----------IOC容器加载完成--------------------"); //2.无代理,无日志记录 IUserDao userDao = (IUserDao) factory.getBean("userDao"); IUserDao userDao2 = (IUserDao) factory.getBean("userDao2"); IDeptDao deptDao = (IDeptDao) factory.getBean("deptDao"); userDao.selectUser(); userDao2.selectUser(); deptDao.selectDept();; deptDao.insertDept("软件事业部"); } } ``` #### 运行测试  ### 后置通知