SpringIoC的XML配置使用
定义bean
<!-- 可以直接使用name属性设置别名,多个可以用空格 , ; 多种方式进行分隔 -->
<bean class="com.qiyang.User" id="user" name="user2 user3,user4;user5">
<description>描述bean的作用</description>
</bean>
单独配置别名:
<!-- 配置bean的别名 -->
<alias name="user" alias="userAlias" />
<!-- 导入另外一个spring的配置文件 -->
<import resource="spring-ioc.xml" />
依赖注入:
- 普通JavaBean基于setter 或 construction
- 注意null、Map、List、Date等类型的注入
- 自定义类型的注入
控制bean的加载顺序:
<!-- depends-on="wife" 优先加载 wife 控制bean的加载顺序 -->
<bean class="com.qiyang.Person" id="person" scope="singleton" depends-on="wife" />
<bean class="qiyang.Wife" id="wife" />
懒加载:
<!-- 懒加载,使用是才会加载 -->
<bean class="com.qiyang.Wife" id="wifeLazy" lazy-init="true" />
工厂模式创建bean:
<!--静态工厂-->
<bean class="com.qiyang.Person" id="personChild"
factory-method="createPersonFactory" />
<!--抽象工厂-->
<bean class="com.qiyang.PersonFactory" id="factory" />
<bean class="com.qiyang.Person" id="personFactory"
factory-bean="factory" factory-method="createPersonFactoryMethod" />
自动注入:支持byName byType constructor,优先根据名字,其次是参数类型
作用域:单例(默认)、原型bean(多例)
scope="prototype"
scope="singleton"
## web相关
scope="request"
scope="session"
scope="application"
scope="websocket"
生命周期回调:
生命周期函数三种方式:
- 实现接口:InitializingBean、DisposableBean,注意销毁的触发时机
public class Person implements InitializingBean, DisposableBean {
public void destroy() throws Exception {
System.out.println("销毁bean,注意不是程序执行完就销毁,可调用ioc容器close方法触发器销毁");
}
public void afterPropertiesSet() throws Exception {
System.out.println("Person加载");
}
}
- 自定义init() 和 destroy() 方法
<bean class="com.qiyang.Person" id="autoPerson" autowire="constructor" init-method="initByConfig" destroy-method="destroyByConfig"></bean>
- 注解:@PostConstruct、 @PreDestroy
如何创建第三方bean?
例如:druid数据库连接池,与配置普通bean没啥两样
如何导入属性文件?
<!-- 引入外部属性资源文件 ${xxx} 获取即可 -->
<context:property-placeholder location="jdbc.properties" />
SPEL(spring表达式语言)
- 作为了解,不常用
- 可以做计算、做属性引用,方法调用、静态方法调用等
- 语法:#{xxxx表达式}
好了,本期内容就是这么多,希望能够帮助到您,感谢您能读到最后,如果觉得内容不错,请您点赞转发给予鼓励,咱们下期再见。