<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
scope:单例(singleton)/多例(prototype)/每一个请求创建一个实例(request)/每一个会话创建一个实例(session)
使用单例还是多例,得看对象的成员变量是否要再多个线程之间共享, 默认为单例(singleton)
init-method 初始化时调用的方法, 在构造对象之后
destroy-method 销毁对象时调用的方法,不知道JVM回收时会不会调用
-->
<bean id="sadamu" class="org.spring.example.Sadamu" scope="singleton"
init-method="init" destroy-method="destroy">
<!--<property name="Kazhafei" ref="kazhafei" />-->
<!--EL表达式 可以是对象、对象属性#{kazhafei.name}、字符串等#{'abc'}-->
<property name="Kazhafei" value="#{kazhafei}" />
</bean>
<!--创建对象kazhafei-->
<bean id="kazhafei" class="org.spring.example.Kazhafei">
<!--通过构造函数参数的方式传递-->
<constructor-arg index="0" ref="sadamu" />
</bean>
</beans>
scope
- 不赋值默认为单例(singleton)
- prototype:多例, 获取一次就创建一个新对象
- request:每一个请求创建一个实例
- session:每一个回话创建一个实例
- 使用单例还是多例,得看对象的成员变量是否要再多个线程之间共享
init-method与destroy-method
- 对象初始化与被销毁时执行的方法
- init-method会在构造方法之后执行
Setter方式注入
在bean标签下写property标签,name为属性名称,测试了下首字母不区分大小写 -,-
普通方式是用ref赋值,直接写其他已经配置的javabean
spEL表达式使用value属性,对象:#{beanName} ,字符串:#{'字符串'}
构造方式注入
在需要注入对象的构造函数中添加属性、参数。
private Sadamu sadamu;
public Kazhafei(Sadamu sadamu) {
System.out.println("卡扎菲初始化");
System.out.println(String.format("萨达姆在卡扎菲处初始化:【%s】", sadamu));
}
XML中配置,index代表参数所在索引(从0开始).,ref还是表示javaBean的名称
<!--创建对象kazhafei-->
<bean id="kazhafei" class="org.spring.example.Kazhafei">
<!--通过构造函数参数的方式传递-->
<constructor-arg index="0" ref="sadamu" />
</bean>
其他各类型的注入,就是给对象属性赋值
<!--创建对象kazhafei-->
<bean id="kazhafei" class="org.spring.example.Kazhafei">
<!--通过构造函数参数的方式传递-->
<constructor-arg index="0" ref="sadamu"/>
<property name="对象">
<ref bean=""/>
</property>
<property name="数组">
<array>
<value>1</value>
<value>2</value>
<value>3</value>
</array>
</property>
<property name="Map">
<map>
<entry key="k1" value="a"/>
<entry key="k1" value="a"/>
</map>
</property>
<property name="List">
<list>
<value>l1</value>
<value>l2</value>
</list>
</property>
<property name="Properties">
<props>
<prop key="name">张三</prop>
</props>
</property>
</bean>