AOP

AOP 面向切面编程 AOP是OOP的延续

AOP的作用以及其优势
作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强
优势:减少重复代码,提高开发效率,并且便于维护

AOP的底层实现
AOP的底层是通过Spring提供的动态代理技术实现的。

AOP的动态代理技术
常用的动态代理技术
JDK代理:基于接口的动态代理技术
CGLIB代理:基于父类的动态代理技术(默认)

1、before通知                  在执行目标方法之前执行
2、afterRhrowing通知           在目标方法执行之后执行
3、afterReturning通知          在目标方法执行之后报错时执行
4、after通知                   无论什么时候程序执行完成都要执行的通知

上述的4大通知类型,不能控制目标方法是否执行,一般用来记录程序的执行的状态
一般应用与监控的操作

5、around通知(功能最为强大)     在目标方法执行前后执行
因为环绕通知可以控制目标方法是否执行,控制程序的执行的轨迹

切入点表达式

1、bean("bean的ID") 粒度:粗粒度 按bean匹配 当前bean中的方法都会执行通知
2、within("包名.类名") 粒度:粗粒度 可以匹配多个类
3、execution("返回值类型 包名.类名.方法名(参数列表)") 粒度:细粒度 方法参数级别
4、@annotation("包名.类名") 粒度:粗粒度 按照注解匹配

AOP依赖

<dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjweaver</artifactId>
</dependency>
@Aspect
@Component
public class UserAOP {
    @Pointcut("within(cn.cy.service.impl.UserServiceImpl)")
    public void pointCut(){}
    @Around("pointCut()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("开始查询数据");
        Object proceed = joinPoint.proceed();
        System.out.println("查询数据完毕");
        return proceed;
    }
}

IOC

控制反转
控制指的是控制外部资源的获取,控制对象的生命周期。
反转由Spring框架来控制程序中的外部资源、控制对象的生命周期等。
IOC的好处就是解耦,对象和对象之间的耦合度变低,便于测试、便于功能复用

DI

DI依赖注入,即然对象的整个生命周期都是由Spring框架来维护的。
依赖: 通过配置文件告诉Spring你的对象之间的依赖关系
注入: 你的对象已经交给Spring管理了,你也告诉Spring你的对象之间的依赖关系了,那么在合适的时候,由Spring把你依赖的其他对象(或者资源、常量等)注入给你。

把所有的控制权交给Spring,由Spring帮你创建对象、帮你维护对象之间的依赖关系。

SpringMVC

springmvc

MyBatis中#{}和${}的区别是什么

  • 拼接符:${}prepertoes文件中的变量占位符,可以用于标签属性值和sql内部,属于静态文本替换
  • 占位符:#{}是sql参数占位符,MyBatis会将sql中的#{}替换为?号。

LLL_
15 声望3 粉丝

« 上一篇
SpringCloud
下一篇 »
mysql索引