Spring基本介绍及容器注入
Spring框架
spring框架是一个分层架构,由7个定义良好的模块组成
spring模块构建在核心容器之上。核心容器定义了创建、配置和管理bean的方式。
组成spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。
模块如下:
1--核心容器
核心容器提供spring框架的基本功能,核心容器的主要组件是BeanFactory,
他是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性与实际的应用程序代码分开。
2--Spring上下文
是一个配置文件,该配置文件想spring框架提供上下文信息
3--Spring AOP
通过配置管理特性,Spring AOP 模块直接将面向切面(方面)编程功能集成到spring框架中。
4--Spring DAO
JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构管理异常处理和不同数据库供应商抛出的错误信息,极大的降低了异常代码数量
5--Spring ORM
Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括Hibernate ,Mybatis
6--Spring WEB
web上下文模块建立在应用程序上下文模块之上,为基于web的应用程序提供上下文。
7--Spring MVC
该框架是一个全功能的构建web应用程序的MVC实现。通过策略接口,MVC框架变成高度可配置的。MVC容纳了大量视图技术。其中包括JSP、Velocity、和POI
Spring 框架好处
spring是最大的工厂
spring负责业务逻辑组件的床架和生成,并管理业务逻辑组件的生命周期。
spring可以生产所有的实例,从控制器、业务逻辑组件、持久层组件
Spring特点
1--降低了组件之间的耦合性,实现了软件各个层之间的解耦。
2--可以使用spring容器提供很多的服务,如:事务管理,消息服务
3--容器提供单例模式支持
4--容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控
5--容器提供了众多的辅助类,能加快应用的开发(org.springframework.jdbc.core.JDBCTemplate 等)
6--spring对主流的应用框架提供了集成支持,例如:hibernate、JPA、Struts、Mybatis(IBatis)
7--Spring属于低侵入式设计,代码污染度极低
8--独立于各种应用服务器
9--spring的DI机制降低了业务对象替换的复杂性
10--spring的高度开发性,并不强制应用完全依赖于spring,开发者可以自由选择spring 的部分或者全部
-------------------------------------------------------------------
正常情况下,为一个对象的属性赋值,必须创建对象的实例,调用对象的set方法,设置该属性的值;
------------------------------------------------------------------
Spring的核心技术
1--反向控制或者控制反转(inversion of control IOC)
当一个对象需要另外一个对象时,传统设计过程中,需要通过调用者来创建被调用者的对象实例。
但是在spring中,创建被调用者的工作不再由调用者来完成,而是由spring ICO容器完成。这种设计模式被称之为反向控制,也叫作依赖注入
DI(dependency injection) 依赖注入
就是组件之间的依赖关系由容器在运行期决定,形象的来说,就是由容器动态的将某种依赖关系注入到组件中。
容器就是 .xml配置文件
通过使用DI(依赖注入),当组件之间关系发生变化时,我们只需要修改系统中相关的配置文件,不需要改动我们的代码,
这就减少了我们的程序维护量,又提高了我们程序的可重用性
2--手动装配
A: Bean工厂 (BeanFactory)
使用org.springframework.beans.factory.BeanFactory接口来获得Bean对象实例。
在spring中有很多BeanFactory接口的实现,但是最常用的是 org.springframework.benas.factory.xml.XmlBeanFactory,
通过XmlBeanFactory类可以从XML配置文件中读取配置文件中Bean的装配信息,
并在spring容器中建立相应的javaBean对象实例。并返回该实例。
要想建立一个XmlBeanFactory对象实例,需要将配置文件通过FileSystemResource对象传入XmlBeanFactory类的构造器。
并通过BeanFactory的getBean方法获得Bean实例
eg:
//装配applicationContext.xml文件
BeanFactory factroy = new XmlBeanFactory(new FileSystemResource("applicationContext.xml"));
//获得被装配的HelloWorld对象实例
HelloWorld helloWorld = (HelloWorld) factory.getBean("helloWorld");
helloWorld.sayHelloWorld();
B: 应用上下文(ApplicationContext)
通过org.springframework.context.ApplicationContext接口来装配Bean
在spring中有两种实现:
FileSystemXmlApplicationContext:通过绝对或相对路径指定XML配置文件,并装配xml文件的配置信息。
ClassPathXmlApplicationContext:从类路径中中搜索xml配置文件。
课堂练习:
定义一个bean叫Person,有三个属性 姓名、年龄、工资
请使用spring IOC 容器 将各个属性值注入实例中。
第一步:创建Person类
第二步:在Spring主配置文件中配置bean及属性值
第三部:写一个测试类,在测试类中,创建并启动容器,获得实例
增加需求:
Person中增加了一个属性,是User类型的,请使用springDI技术将其注入
补充需求:
Dog类,两个属性名称,颜色, 构造器方式注入
浙公网安备 33010602011771号