工作中对Spring的使用,仅限于项目一开始搭建的时候,搭建完之后,后期主要是对业务的开发,好久不用,都忘记了,准备记一下,方便后期回顾。
首页谈谈Spring IOC:
简单点说:当时在大学的时候做项目,老师就说不要看框架书,现在做项目就直接用JAVA基础知识写。记得,每次都要写好多new,代码很乱。
IOC的主要作用就是不需要我们自己去new 对象了,全部交给Spring容器去创建实例了,当需要的时候,Spring会将需要的实例赋给需要的引用。
下面找了网络上其他大神的理解:
1、所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。
2、IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。
3、IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。
4、Spring所倡导的开发方式就是如此,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。
注意以下几点:
1、在Spring XML中配置bean class需要写bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参数的构造器。 id:标识容器中的bean,id唯一。 2、ApplicationContext在初始化上下文时(容器启动的时候)就实例化所有单例的Bean(Bean可以不是单例,但是所有的Spring Bean默认都是单例)
Spring中bean的作用域:
http://blog.csdn.net/fengruifang/article/details/6522262
3、依赖注入的方式: A、属性注入(最常用):通过setter方法注入bean的属性值或者依赖的对象
B、构造器注入
C、工厂方法注入(很少用,不推荐)
4、通过注解实现,目前最流行的方式
参考文章:
http://blog.csdn.net/qq_22654611/article/details/52606960
http://www.cnblogs.com/ITtangtang/p/3978349.html
http://blog.csdn.net/it_man/article/details/4402245
http://jinnianshilongnian.iteye.com/blog/1413846
http://blog.csdn.net/fengruifang/article/details/6522262