1.工厂设计模式: 比如通过 BeanFactory 和 ApplicationContext 来生产 Bean 对象
BeanFactory 是 IOC 容器,是用来承载对象的
FactoryBean 是一个接口,为 Bean 提供了更加灵活的方式,通过代理一个Bean对象,对方法前后做一些操作。
这四个注解的本质都是一样的,都是将被该注解标识的对象放入 spring 容器当中,只是为了在使用上区分不同的应用分层
动态代理
JDK 动态代理时业务类必须要实现某个接口,它是基于反射的机制实现的,生成一个实现同样接口的一个代理类,然后通过重写方法的方式,实现对代码的增强。
CGLIB 动态代理是使用字节码处理框架 ASM,其原理是通过字节码技术为一个类创建子类,然后重写父类的方法,实现对代码的增强。