1. 使用XML装配bean

Xml是最常见的spring应用系统配置源。

几种spring容器都支持使用xml装配bean,包括:

XmlBeanFactory

ClassPathXmlApplicationContext

XmlWebApplicationContext

① 基本语法为:

<beans>

<bean id="" scope="" class=""></bean>

<bean id="" scope="" class=""></bean>

</beans>

 

② Scope选项

<bean scope=”singleton” id="userService" class="com.service.UserService"/>

singleton:单例 默认值

prototype:原型(每次获取bean时创建新的对象)

request:一次请求有效(java web开发)

sessionsession级有效(java web开发)

global-session:webspring容器ApplicationContext一致。

 

③ 初始化与销毁

有两种方法:

1.在配置文件中配置:

<beans>

<bean id="" scope="" class="" init-method="init" destory-method="destory"></bean>

</beans>

这样在装载此bean对象之后会立马执行init函数,销毁时会执行destory函数。

2.在类中使用注解:

不需要在配置中配置,直接在init方法前面添加注解:

@PostConstruct

    public void init(){

    }

    @PreDestory

    public void destory(){

    }

 

④ 通过set方法注入依赖

即可以通过在配置中添加property属性,使用反射机制,就会调用类相应的set方法将值注入进去,可以是值也可以是集合类,甚至是其他的bean

<bean id="userService" class="com.service.UserService">

<property name="name">

<value>张三</value>

</property>

<property name="address">

<list>

<value>北京</value>

<value>上海</value>

</list>

</property>

<property name="name" ref="另一个bean的名字"/>

</bean>

集合可以是string[],listsetmap等等。

如果是list<对象>,则配置时:

<list>

<ref bean="对象对应的beanid"/>

<ref bean="对象对应的beanid"/>

</list>

如果是set<对象>,则配置时:

<set>

<ref bean="对象对应的beanid"/>

<ref bean="对象对应的beanid"/>

</set>

如果是map<string,对象>,则配置时:

<map>

<entry key="字串" value-ref="对象对应的beanid"/>

<entry key="字串" value-ref="对象对应的beanid"/>

</map>

 

⑤ 继承

<bean id="userService" parent="另一个beanid" class="com.service.UserService">

</bean>

添加一个parent属性,初始化数据时会先调用父类的方法。

 

⑥ 通过构造函数注入

<bean id="userService" class="com.service.UserService">

<constructor-arg index="0" type="java.lang.String"value="张三"/>

<constructor-arg index="1" type="int"value="25"/>

</bean>

 

⑦ 自动装配bean的属性值

5种方式:

 java_spring_使用XML装配bean

 java_spring_使用XML装配bean

Master类有个成员变量,Dog m_dog;

因为没有配namem_dogpropety,因此通过autowirebeans中去找,如果是byType,则找到类型一样的就装载进去,如果是byName则找beanidm_dog的对象进行装载。

 

注:当一个接口有多个实现类时,使用注解装载bean时会报错,需要使用Qualifier强行指定使用哪个实现类,如:

@Resource

@Qualifier("userServiceBean")  

private IUserService userService;

相关文章: