Spring回顾
原文链接:https://blog.csdn.net/qq_43423383/article/details/93417314
OOP(面向对象)的延伸AOP(面向切面)
Spring核心思想:
IOC/DI:控制反转/依赖注入
IOC:Inverse Of Control 控制反转【反射创建对象.对象的生命周期全部交给Spring容器来控制处理】
DI:Dependency Injection 依赖注入【创建对象之后给对象的属性赋值,通过set方法或者构造器的参数传递【依赖关系】进行赋值】
AOP:面向切面编程 (在不影响原有的功能基础上加上自己的东西) 常用于事务的管理,事务开启/回滚/提交
aop代理:
......
Spring注入:
Set方法注入:
1.属性是普通类型【包装类型,基本数据类型,String】使用property标签的value属性赋值。
2.属性是非普通类型的其他bean时,使用property标签的ref属性去关联另一个bean,值为另一个标签bean的id属性值
构造方法注入:
1.在配置文件中bean下有consturtor-arg标签注入
2.在java类中必须声明无参构造器
注解注入:
1.dao/仓库层 @repository
2.controller/控制层 @controller
3.service/业务层 @service
4.代替所有 @comporent(意思说每一层都可以用@comporent 方式,包括上面三个)
慢慢理解吧(原理)
1.通过传入的被代理对象获取Class对象
2.获取被代理对象实现过的所有接口
3.利用字符串拼接动态拼接一个实现类实现第二步得到所有的接口,内部持有一个被代理对象作为属性
4.重写接口所有方法,按照MyInvocationHandler的invoke方法的格式来重写所有的方法
5.输出流输出到一个java文件中
6.动态编译成class文件
7.使用类加载器加载class文件,得到class文件
8.使用反射技术创建对象
9.返回该对象:生成的实现;类的对象【代理对象】