1.spring的依赖注入和new一个对象的区别:(spring默认是单例的,依赖注入其中操作的都是一个对象)
spring依赖注入:用时从spring的容器池取出,不需要的时候放回,内存节省低耦合,对象调用关系由spring管理。
注入的实例可以有其他依赖关系,由spring负责注入。
new对象单例使用:如果需要和sping依赖注入一样,需要在类的头部实例化对象,无论在类的内部是否用到该实例化对象,他都会贯穿当前类的生命周期。
该类对象不会被回收,实例化对象也不会被回收,因为存在引用关系。如果要使用多例对象,最后还是使用new创建对象,即便spring依赖注入有多例模式,但是也不推荐使用多例。
实例对象其他依赖关系都是没有注入的(无法调用使用@Autiowred注入的bean对象),失去ioc的作用。
注入有三种方式:(1)set方法 (2)构造方法 (3)注解注入
###面向切面编程(AOP)
1.目的:将那些与业务无关,却为业务模块共同调用的逻辑或者责任(事务管理、日志管理、权限控制等)封装起来,减少重复代码,降低模块间的耦合度,提高代码的可维护性和拓展性。
2.AOP底层使用动态代理:JDK动态代理、cglib动态代理。