spring aop 的五大通知类,java 从入门到精通 pdf 百度云
<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){
独家面经总结,超级精彩
本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!




Java 面试准备
准确的说这里又分为两部分:
Java 刷题
算法刷题
Java 刷题:此份文档详细记录了千道面试题与详解;


评论