Spring框架中的容器以及两大特性
Spring容器提供了一种管理方法,致力于解决我们各个层级之间的对象的调用关系。
我们通常调用各层级对象的时候,需要不断创建对象,一次访问就需要创建两个对象;如果我们使用Spring容器,将不同层级的对象放入容器中,每次使用的时候调用容器中的对象,就不用创建那么多对象,达到节约内存空间的目的。简单来讲,Spring容器就是存储JavaBean对象的容器。
BeanFactory是一个接口,需要创建继承的子类对象。下图是其继承结构图:
方式二:使用ClassPathApplicationContext获取容器类
这个方法替代了方式一,是我们创建容器类对象主要使用的方法。
方式三:使用FileSystemXmlApplicationContext来获取容器对象
这种方式在创建对象的时候需要传入配置文件的绝对路径,这个方法可以使用项目外部的配置文件
IOC(inversion of controller)指的是控制反转,简单来书,就是讲创建对象的过程或者创建对象的权限交给了spring框架来帮我们处理,我们不用再通过new的方式来创建JavaBean对象,这个过程就叫做IOC。
首先在applicationContext中配置我们的对象
然后从容器中获取我们的JavaBean对象
创建bean的工厂类
在配置文件中进行配置
获取JavaBean对象
创建工厂类的方式与上面相同
在配置文件中进行配置
获取JavaBean对象
Bean属性scope可以声明bean的作用域范围,Bean的作用域范围有四种:
我们可以在JavaBean类中添加init-method与destroy-method两个方法,实现bean在初始化和关闭的时候调用的方法,然后在配置文件中进行配置。
JavaBean类
配置文件
DI(dependency injection)指的是依赖注入,简单来说就是使用spring框架对我们的JavaBean对象赋值的过程。
使用上文中创建的JavaBean类
注意:一定要给属性生成对应的setter方法
配置JavaBean类的属性
从容器中获取我们的JavaBean对象
在JavaBean中生成带所有属性的构造方法
在配置文件中申明JavaBean对象
申明的另一种方法:
调用JavaBean的属性
P名称空间与C名称空间其实都是不存在的虚拟空间,主要是用于简化我们的spring为JavaBean属性赋值时的配置。
添加P名称空间与C名称空间到schema
通过setter方法进行赋值:
等价于:
通过构造方法进行赋值
等价于:
Spel表达式,类似于jstl与el表达式的语言,spring可以支持我们在为属性赋值的时候,通过spel表达式来进行更改我们的属性值。
创建一个含有集合属性的JavaBean类
为集合属性注入值
Java框架Spring是用来干什么的?
spring就是作为容器去管理你的类,有spring管理的类在整个服务器启动期间在内存中只生成一份。
Spring的Ioc(控制反转和依赖注入)
控制反转:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直
接操控。
依赖注入:组件之间的依赖关系由容器在运行期决定 ,由容器动态的将某种依赖关系注
入到组件之中。通俗点说,例如A,B两个类都交由spring管理,A中有B的引用,那么在配置中可以事先配置好,服务器启动时初始化A的时候会自动将B注入到A中,而不用再A中再次去用new来初始化B。spring还可以对事物进行管理。将hibernate的sessionFactory交由spring进行管理。她封装了所有对事务处理的功能,包括异常时事务回滚,操作成功时数据提交等复杂业务功能。这都是由Spring容器来管理,大大减少了程序员的代码量,也对事务有了很好的管理控制。
spring主要的作用?
Spring框架是为了解决企业应用开发的复杂性而创建的。
Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。
扩展资料
优点
1、JAVA EE应该更加容易使用。
2、面向对象的设计比任何实现技术(比如JAVA EE)都重要。
3、面向接口编程,而不是针对类编程。Spring将使用接口的复杂度降低到零。(面向接口编程有哪些复杂度)
4、代码应该易于测试。Spring框架会帮助你,使代码的测试更加简单。
5、JavaBean提供了应用程序配置的最好方法。
6、在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。
参考资料来源:百度百科-spring框架