Spring整合juilt测试框架
- 需要“springs-test”jar包
@RunWith(SpringJUnit4ClassRunner.class)
//@RunWith(SpringJUnit4ClassRunner.class) 整合包提供
@ContextConfiguration("classpath:applicationContext.xml")
// @ContextConfiguration(locations="核心配置文件位置 classpath: 表示类路径 src ")
public class Test1 {
@Autowired
private UserService userService;
@Test
public void test(){
userService.add();
}
}
Spring AOP
- AOP 是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善。
- AOP就是要在基于OCP(开闭原则)在不改变原有系统核心业务代码的基础上动态添加一些扩展功能并可以控制对象的执行(例如可以让这个业务继续执行,也可以让这个业务停止执行.)。
AOP相关术语
- 切面(aspect): 横切面对象,一般为一个具体类对象(可以借助@Aspect声明)。
- 连接点(joinpoint):程序执行过程中某个特定的点,一般指被拦截到的的方法。
- 切入点(pointcut):对连接点拦截内容的一种定义,一般可以理解为多个连接点的结合。
- 通知(Advice):在切面的某个特定连接点上执行的动作(扩展功能),例如around,before,after等。
AOP基本步骤
-
step1:添加aop依赖(两个)
-
step2:配置aop 核心(基于xml,基于注解:重点)
-
step3:定义核心业务(核心关注点):推荐先写接口再写实现类
-
step4:定义扩展业务(非核心关注点):本质上就是切面
-
step5:基于配置实现非核心业务的切入(切入点,连接点,通知)
-
step6:编写测试类进行单元测试
-
@Aspect 注解用于标识此类为一个AOP横切面对象
@Pointcut 注解用于定义本类中的切入点,本案例中切入点表达式用的是bean表达式,这个表达式以bean开头,bean括号中的内容为一个spring管理的某个bean对象的id。
@Before 用于定义一个前置通知(满足切入点表达式的核心业务方法执行之前要执行的一个操作)
@After 用于定义一个后置通知(满足切入点表达式的核心业务方法执行之后要执行的一个操作)术语增强:
切面:用于封装扩展业务的一个类的对象。
通知:切面扩展业务中的一个操作(方法)。