1、Spring框架
IOC:反转控制(查找资源的被动方式)
AOP:面向切面编程(声明式事务)
2、Spring之HelloWorld
1.搭建环境
a.创建普通的javaProject.
b.导入相关的jar包(beans,core,context,expression,commons-logging)
c.创建Spring的核心配置文件: applicationContext.xml
2.编写java类
3.在IOC中配置bean.
4.测试:
a.实例化SpringIOC容器
b.从IOC容器中获取bean
3、IOC&DI
SpringIOC容器的结构:
a.BeanFactory:SpringIOC容器的基础设施,面向框架本身的.
b.ApplicationContext:面向开发者的.
c.ConfigurableApplicationContext:是ApplicationContext的子接口,额外的提供了refresh,close两个方法。
d.
ClassPathXmlApplicationContext:从类路径下加载读取配置文件
FileSystemXmlApplicationContext:从文件系统下加载读取配置文件
4、依赖注入(DI)
1.set方式注入
a.在java类中提供成员变量(属性)对应的set方法.
b.在IOC容器中通过property标签进行属性值的注入
2.构造器方式注入
a.在java类中提供对应的构造器(一定要提供无参数的构造器)
b.在IOC容器中通过constructor-arg标签进行属性值的注入
c.constructor-arg标签的属性:
value: 指定普通属性值
ref: 引用其他的bean
index: 指定构造器参数的位置
type: 指定构造器参数的类型
5、注入属性值的细节
1.字面值
a.遇到特殊字符,可以使用转义字符或者是<![CDATA[....]]>
2.引用其他的bean
a.使用ref来指定IOC容器中已经存在的bean的id。
3.内部bean
a.定义到一个bean的内部的bean.
b.内部bean只能在bean的内部来使用.
c.内部bean的定义可以省略id的配置.
4.null值与级联属性
a.如果要给bean的属性装配null值,可以使用Spring提供的好的<null/>专有标签.
b.Spring支持使用级联的方式给属性进行赋值.
5.集合类型的属性注入
a.集合类型:
List: <list></list>
Set: <set></set>
Map: <map> <entry></entry></map>
Properties: <props><prop></prop> </props>
6.独立的集合bean
a.先导入util命名空间
b.使用util:list来配置独立的集合bean
7.p命名空间
a.先导入p命名空间
b.在bean的配置中使用p:xxx 或者是p:xxx-ref来进行属性值的注入
6、自动装配
1.byName
a.根据bean的id值进行装配
b.根据IOC容器中bean的id值与要装配的bean的set风格的属性名进行匹配.
c.匹配上则装配成功,匹配不上则装配失败,不会抛异常.
2.byType:
a.根据bean的类型进行装配
b.根据IOC容器中bean的类型(class)与要装配的bean的属性的类型进行匹配
c.使用byType的方式需要注意:如果匹配上多个兼容的类型(本类型与子类型),会抛出异常.