IOC和AOP Spring中的两个核心IOC控件反转IOC和DI@Resourse和@Autowired依赖注入方式面向AOP片的编程代理模式事务AOP注释
Spring的两个主要核心
IOC和AOP
IOC控件反转IOC和DI IOC控制反转意味着,我需要在程序中自己创建对象,但当前对象的创建委托给外部容器(这里是Spring容器)
IOC必须提到的另一个概念DI依赖注入是将对象之间的相互依赖关系交给IOC容器,IOC容器完成对象的注入。
两者的区别
IOC要解决的是对象的创建问题;
DI解决的是创建对象后的对象关系问题。
在三层体系结构中最终实现的效果是,控制器不会显示服务层的具体实现类代码,而只能看到服务接口。 Service中没有出现Dao层的具体实现类代码,只出现Dao层接口。
@Resourse和@Autowired @Resource
缺省情况下,它按名称组装,并指定要注入的名称。
@resource(name=“名称”
@Autowired
在按类型列出的程序集中,如果容器中有多个子类报告错误,则必须在@Resource中指定。
注入方式1、助洗剂依赖注入
容器启动构造函数时完成。 构造函数具有一组参数,每个参数表示一个注入的对象。
2、Setter方法依赖注入
首先,容器启动无参数的生成方法或无参数的静态工厂实例化对象,然后容器调用bean的setter方法以完成setter方法的依赖关系注入。
面向AOP切片的编程AOP封装业务模块共同调用的逻辑和责任(事务、日志管理、权限控制),减少系统的重复代码,降低模块之间的耦合度,将来功能:将关注点代码与业务代码分离。
对于未实现代理模式Spring AOP是基于动态代理的,如果要代理的对象实现了某个接口,那么Spring AOP就会使用JDK Proxy去创建对象接口的对象,请使用CGlib。
事务AOP注释@Aspect
切面表示横穿业务的对象。 包含“切口”(PointCut )和“通知”(Advice )。
@PointCut
切口指示要切入的位置,如某个类或某个方法。 也就是说,先决定范围。
通知
@Before预通知,方法调用前
@AfterReturning后置通知在成功调用方法后执行
@Around环绕声通知,可以分别在方法调用之前和之后执行的通知
@AfterThrowing异常通知、方法调用中发生异常时通知
@After最终通知在方法调用后执行,类似于finally