一、spring简介
1、sprig使命:简化Java开发,spring主要通过一下集中策略来简化Java开发
1、基于pojo的轻量级和最小侵入性编程。
2、通过依赖注入和面向接口实现松耦合,并且易于测试。
3、基于切面和惯例进行声明式编程,减少耦合。
4、通过切面和模板减少样板式代码。(JdbcTemplate)
2、依赖注入
实际的应用都是由两个类或者更多的类组成,类之间通过相互协作来完成特定的业务逻辑。通常每个对象负责管理与自己相互协作的对象的引用,但是这将会导致高度耦合和难以测试的代码;
通过依赖注入的方式,对象的依赖关系将由负责协调系统中各个对象的第三方组件在创建对象时设定。对象无需自行创建或管理他们的依赖关系;这就大大的减少了对象之间的耦合,可以注入接口的方式给对象注入不同的实现;
创建组件之间协作的行为称为装配。spring有多种装配bean的形式(xml配置文件,注解等),spring通过应用程序上下文装载bean的定义并把他们组装起来。spring应用程序上下文全权负责 对象的创建和组装。
3、应用切面
依赖注入使相互协作的组件保持松散耦合,而aop编程允许你把遍布应用各处的功能分离出来形成可重用的组件,实际中,经常会用aop来分离一些和业务逻辑无关的功能,如日志、事务管理、安全等;
如果这些与业务逻辑混在一起,将会导致复杂的依赖关系:
而aop可以使这些服务模块化,并以声明的方式将它们应用到它们需要影响的组件中去,使这些组件具有更高的内聚性以及更加关注自身业务完全不需要了解系统服务的复杂性;
4、通过模板消除样板式代码
例如spring的JdbcTemplate
5、spring容器
在基于spring的应用中,容器生存与spring容器中,容器创建它们,装配它们,配置它们,管理它们的整个生命周期,从生存到死亡;
容器是spring框架的核心,spring容器通过依赖注入管理构成应用的组件,它会创建构成应用组件之间的关联;
spring自带几种容器的实现,可以归为两种不同的类型。
Bean工厂:最简单的容器,提供基本的di支持;
应用上下文:基本Bean工厂智商构建,提供面向应用的服务
6、应用程序上下文
ClassPathXmlApplicationContext:从类路径下的xml配置文件中加载上下文定义;
FileSystemXmlApplicationContext:读取文件系统下的xml配置文件并加载上下文定义;
XmlWebApplicationContext:读物web应用下的配置文件并装载上下文定义;
7、bean生命周期
1、spring对bean进行实例化
2、spring将值和bean的引用注入进bean对应的属性中。
3、如果bean实现了BeanNameAsare接口,spring将bean的id传递给setBeanName()接口方法
10、如果bean实现了DisposableBean接口,spring将调用它的destroy()方法。
二、xml装配Bean
1、声明Bean
其实就是建立一个POJO
2、配置Bean
spring提供了两种配置Bean的方式,xml配置文件和Java注解;
spring配置文件命名空间:
可以通过<beans>元素内增加一些<bean>来配置一个简单的bean,还可以通过构造函数和工厂方法来初始化bean
构造函数:
<bean>元素的constructor-arg属性,可以传入一些初始化参数;
工厂方法:
<bean>元素的factory-method属性;
3、Bean的作用域
所有的spring Bean默认都是单例,如果想要每次请求都获得一个bean实例,需要配置<bean>元素的scope属性
4、初始化和销毁bean
为bean定义初始化和销毁操作,只需要使用init-method和destroy-method参数来配置<bean>元素,init-method属性指定了初始化bean时调用的方法,而destroy-method属性指定了bean从容器中移除之前要调用的方法;
5、注入bean属性
<bean>元素的property属性
6、装配集合
当配置集合类型的bean属性时,spring提供了4中类型的集合配置元素
7、装配空值,null
8、使用spel表达式装配bean
三、注解装配bean
四、切面
五、spring模块
1、核心spring容器
容器是spring框架最核心的部分,它负责spring应用中的Bean的创建、配置和管理。在该模块中,你会发现spring的Bean工厂提供了依赖注入。在Bean工厂之上,你会发现几种spring应用上下文的实现。正如你所看到的,所有的spring模块都构建于核心容器之上。
2、spring的aop模块
在aop模块中,spring对切面编程提供了丰富的支持。
3、数据访问与集成
使用jdbc编写代码通常会导致大量的样式代码,spring的jdbc和dao封装了这些代码,使我们访问数据库变得简单了,还可以避免因为释放数据库资源失败而导致的问题。
4、web和远程调用
构建web应用的mvc框架和远程调用框架
5、测试模块
五、spring portfilio
1、spring web flow
建立于spring mvc框架之上并为基于流程的会话式web应用提供支持
2、spring web service
发布服务
3、spring security
安全切面
4、spring integration
与其他应用交互