Spring 配置概述
今天再看这个,顺路整理,新人。
要想启动Spring容器,需要三方面:
1.Spring框架类包放入到信用程序类路径下。
2.Spring配置信息完备。
3.ean的类都放在应用程序类路径下。
Spring启动时候读取配置,生成一份配置注册表,根据这张表去实例化Bean。装配好Bean之间对的依赖。
Bean配置信息:(多种)
1.Bean的实现类
2.Bean的属性信息,如数据源的连接数,用户名,密码等。
3.Bean的依赖关系,Spring根据这个关系装配Bean。
4.Bean的行为配置,生命周期范围以及回调函数。
一,xml方式:
头文件:
xmlns="http://java.sun.com/xml/ns/javaee" 默认的命名空间
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 官方标准的命名空间
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 自定义命名空间
自定义还需要指定对应位置的对应文件:
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 结束,多个格式一样。
配制向前兼容,推荐使用新配置。
Bean基本配置:
bean命名:Spring配置文件不许bean的id重复,name可以重复,会造成覆盖,所以推荐id。
如果都不写,则需要直接调用全名。
<bean name="car" id="car" class="com......balabala">
依赖注入:
首先分为属性注入和构造函数注入。
一,属性注入:1,提供默认构造函数 2,要注入属性有setter方法。
<bean name="car" class="........">
<property name="carName"><value>rover</value></property>
</bean>
只检查setter方法,不检查setter方法所操作的属性。
命名规范:前两个都大或者都小。
二,构造函数注入:保证初始化后就可以用。
car(string name){
this.name = name;
}
<bean 。。。。。。>
<constructor-arg type="java.lang.String">
<value>rover<.value>
</constructor>
</bean>
注意入参的顺序无关,所以特定重载对的要注意。
用入参索引解决这个问题:
<bean 。。。。。。>
<constructor-arg index="0" value="rover"/>
</constructor>
</bean>
另外还要注意循环依赖的问题,类似于死锁。解决办法,互相加ref。
<constructor-arg index="1" ref="anotheBean">
三,工厂方法注入:此处暂时不写了,不推荐。