一、spring从体系架构上分为
1. 基本组件框架组合:Spring Framework
2.专项领域应用组件:Spring Portfolio
这个Spring Portfolio主要应用满足于特定的的应用场合:包括了spring Security/spring boot等等
这里主要阐述基本组件框架组合:Spring Framework。
二、Spring Framework
spring框架的发布版本包括了20个不同的模块。每个模块有3个JAR文件。这20个模块依据所属功能可以划分为6类不同的功能!如下图:
1. spring核心容器
核心容器是spring框架最核心的部分,它管理着spring应用中bean的创建、配置和管理等等主要为ID依赖注入功能!该功能是spring的两大核心之一!
2. spring的AOP模块
这个模块是spring应用系统中开发切面的基础
3. 数据访问和集成:
主要用于访问数据持久层(数据库数据等)。包括了简化的JDBC、DAO及框架型ORM如:Mybatis和Hibernate
4. Web和远程调用
此部分解决了web应用的MVC模型。所以这里集合了spring-MVC框架。另外还支持了用于分布式场景的REST API标准等等!
5. Instrumentation:提供JVM的代理
6. 测试:这是spring的测试单元模块,可以模拟用户的请求场景等测试!
三、spring的两个核心内容
DI【依赖注入】和AOP【面向切面】
1. DI【依赖注入】
简化POJO老式Java开发,实现解耦!
注入的方式有很多,最常见几种注入方式【装备方式】:推荐用自动配置的机制!
1)借助JavaConfig完成显式注入:
带有@Bean注解的方法可以采用任何必要的Java功能来产生bean实例。构造器和Setter方法只是@Bean方法的两个简单的样例!
使用Javaconfig的时候,要创建一个带有@Configuration注解的类!
2)xml配置:
a.要创建一个XML文件,并以<beans>元素为根
b.创建<bean>元素【等同于javaConfig的@Bean!注解】
c. 填写id和class(指定到对应的java类)
a/b/c完成了一个原材料Bean的定义!
<bean id="compactDisc" class="soundsystem.SgtPeppers"/>
d. 定义另外一个<bean>为使用者,然后在这个使用者中通过constructor-arg(这是)引用材料bean的id
d1.构造方式【引入ref】注入
<bean id="cdPlayer" class="soundsystem.CDPlayer">
<constructor-arg ref="compactDisc" />
<bean/>
d2.构造方式字面量【value属性】注入[这里用了spring的c命名空间等同于constructor-arg]
<bean id="compactDisc">
class="soundsystem.BlankDisc"
c:_tittle="THIS IS TITTLE"
c:_artist="ARTIST NAME"
<bean/>
这个方式注入的时候可以通过<set><list>元素注入多个参数!
e. Setter注入方式!
在使用者类没有显式的编写构造函数的时候(只有默认隐式)推荐使用此方式注入!Setter方式的注入需要在<bean>元素标签中使用<property>注入到compactDisc的compactDisc属性中(setCompactDisc()Setter方法)(如下例子):property的命名空间是p!Setter同样有ref引用方式和字面量<value>方式!
<bean id="cdPlayer" class="soundsystem.CDPlayer">
<property name="compactDisc" ref="compactDisc"/>
<bean/>
3) 自动化装配bean(推荐的方式)