实例工厂
实例工厂的意思是获取对象实例的方法不是静态的,所以你需要首先 new 工厂类,再调用普通的实例方法:
public class DaoFactory { //实例工厂public FactoryDao getFactoryDaoImpl(){return new FactoryDaoImpl();}}public class SpringAction {private FactoryDao factoryDao; //注入对象public void setFactoryDao(FactoryDao factoryDao) {this.factoryDao = factoryDao;}}
5 种不同方式的自动装配
装配包括手动装配和自动装配,手动装配是有基于 xml 装配、构造方法、 方法等自动装配有五种自动装配的方式,可以用来指导容器用自动装配方式来进行依赖注入 。
中注入一个 Java
提供了以下四种集合类的配置元素:
使用@注解自动装配的过程
在使用@注解之前需要在配置文件进行配置, 。
在启动 IoC时,容器自动装载了一个后置处理器,当容器扫描到@、@或@时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性 。在使用@时,首先在容器中查询对应类型的bean:
AOP AOP原理
OOP(- )面向对象编程,允许开发者定义纵向的关系,但并适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用 。
AOP(- ),一般称为面向切面编程,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性 。
AOP 主要应用场景有
AOP 核心概念
引入():在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段
中的代理
将应用于目标对象后创建的对象称为代理 。在客户端对象的情况下,目标对象和代理对象是相同的 。
+= Proxy
AOP 实现方式
AOP实现的关键在于代理模式,AOP代理主要分为静态代理和动态代理 。
AOP 两种代理方式
提供了两种方式来生成代理对象: JDK Proxy 和 Cglib,具体使用哪种方式生成由 根据对象的配置来决定 。默认的策略是如果目标类是接口,则使用 JDK 动态代理技术,否则使用 Cglib 来生成代理 。
JDK 动态接口代理
JDK 动态代理主要涉及到 java.lang. 包中的两个类:Proxy 和。
是一个接口,通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,动态将横切逻辑和业务逻辑编制在一起 。