akcsdno 2019-11-09
一、基本概念
Dependency Injection) 依赖注入
BeanFactory:BeanFactory为IOC容器提供了基础功能,仅为了向后兼容老的版本
ApplicationContext:ApplicationContext是BeanFactory的子接口(通过API文档查找)
FileSystemXmlApplicationContext:加载配置文件的时候采用的是项目的路径。
ClassPathXmlApplicationContext:加载配置文件的时候根据ClassPath位置。
XmlWebApplicationContext:在Web环境下初始化监听器的时候会加载该类。
AnnotationConfigApplicationContext:根据注解的方式启动Spring 容器。
二、spring开发环境的搭建
下载 springsource-tool-suiute 地址http://spring.io/tools/sts/all
在eclipse中选择help--Install New Software--add--选择springsource的位置--选择标有IDE的四个组件并且在下方选项中不选最后一项--finish--弹出会话框重启eclipse--建立工程--引入jar包(第一个包内找到其中的四个jar包)
三、IOC容器及Bean的配置
每个Bean标签就是一个对象。通过ID(Mame)和Class来定位一个类。Spring生成对象的过程 是用反射机制完成的。
SpringIOC容器Bean的生命周期是Bean的初始化方法被调用到销毁方法被调用
如果定义了一个抽象类,则他不能通过Spring容器拿到,我们可以通过继承方式,子类可以获取父类定义的属性。还可以用集合类的并集。
除了三种注入方式以外还有depends-on 当两个对象依赖关系并没有很直接,只是需要其中的一个参数时
Spring配置文件时还可以引用外部属性文件 value=${var}
SpringIOC容器默认是在容器初始化的时候就会加载所有的Bean。也可以通过指定lazy-init让Spring实现懒加载,即只有在调用的时候才会添加到容器内部。另外还有Request 和Session适用于WebApplicationContext环境
Spring的Bean默认都是单例模式的,即每次取出来的对象都是同一个,通过定义scope = proto type来实现多例模式。
SpEL表达式(Spring表达语言)语法类似于EL,使用#{}作为定界符 SpEL为Bean的属性进行动态赋值提供便利,其作用是:通过id对Bean进行引用,调用方法以及引用对象中的属性,计算表达式的值,正则表达式的匹配
注入基本数据类型对象的方式有两种:<property name="" value/ref=""/>//<property name=""><value>值</value></property>
构造器注入:Spring默认是通过构造方法来注入。即若想将对象A注入到对象B,A的属性值通过构造方法注入B中,要在xml文件中B对象中定义标签 <constructor-arg name= "" ref="" />
setter方法注入:直接使用property标签的方式注入。所有的成员变量必须实现它的setter方法
Collection注入
自动装配:使用autowire 有byType和byName两种 Constructor与byType的方式类似装配是装配Bean中的 所有对象
Classpath自动扫描Bean组件 base-package为需要扫描的包(含子包)。
@Service用于标注业务层组件
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件。
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。