引用
1.Bean在不同的XML文件
<ref bean="someBean"/>
<bean id="OutputHelper" class="com.springapp.output.OutputHelper">
<property name="outputGenerator" >
<ref bean="CsvOutputGenerator"/>
</property>
</bean>
2. 在同一个XML文件中的Bean
<ref local="someBean"/>
<bean id="OutputHelper" class="com.springapp.output.OutputHelper">
<property name="outputGenerator" >
<ref local="CsvOutputGenerator"/>
</property>
</bean>
如何注入值到Spring bean属性
1.正常方式
在一个“value”标签注入值,并附有“property”标签结束。
<bean id="FileNameGenerator" class="com.springapp.common.FileNameGenerator">
<property name="name">
<value>sss</value>
</property>
<property name="type">
<value>txt</value>
</property>
</bean>
2.快捷方式
注入值“value”属性。
<bean id="FileNameGenerator" class="com.springapp.common.FileNameGenerator">
<property name="name" value="sss" />
<property name="type" value="txt" />
</bean>
3. “p” 模式
通过使用“p”模式作为注入值到一个属性。
<bean id="FileNameGenerator" class="com.springapp.common.FileNameGenerator"
p:name="sss" p:type="txt" />
Spring bean加载多个配置文件
<import resource="common/Spring-Common.xml"/>
<import resource="connection/Spring-Connection.xml"/>
<import resource="moduleA/Spring-ModuleA.xml"/>
Spring内部bean
在Spring框架中,一个bean仅用于一个特定的属性,这是提醒其声明为一个内部bean。内部bean支持setter注入“property”和构造器注入"constructor-arg“
<bean id="CustomerBean" class="com.springapp.common.Customer">
<property name="person">
<bean class="com.common.Person">
<property name="name" value="yiibai" />
<property name="address" value="address1" />
<property name="age" value="28" />
</bean>
</property>
</bean>
<bean id="CustomerBean" class="com.springapp.common.Customer">
<constructor-arg>
<bean class="com.springapp.common.Person">
<property name="name" value="yiibai" />
<property name="address" value="address1" />
<property name="age" value="28" />
</bean>
</constructor-arg>
</bean>
Spring Bean作用域
在Spring中,bean作用域用于确定哪种类型的 bean 实例应该从Spring容器中返回给调用者。bean支持的5种范围域:
1.单例 - 每个Spring IoC 容器返回一个bean实例
2.原型- 当每次请求时返回一个新的bean实例
3.请求 - 返回每个HTTP请求的一个Bean实例
4.会话 - 返回每个HTTP会话的一个bean实例
5.全局会话- 返回全局HTTP会话的一个bean实例
在大多数情况下,可能只处理了 Spring 的核心作用域 - 单例和原型,默认作用域是单例。
注:意味着只有在一个基于web的Spring ApplicationContext情形下有效!
单例:
<bean id="customerService"
class="com.springapp.customer.services.CustomerService" />
原型:
<bean id="customerService" class="com.springapp.customer.services.CustomerService"
scope="prototype"/>
Spring集合 (List,Set,Map,Properties)
下面例子向您展示Spring如何注入值到集合类型(List, Set, Map, and Properties)。 支持4个主要的集合类型:
- List – <list/>
- Set – <set/>
- Map – <map/>
- Properties – <props/>
<bean id="CustomerBean" class="com.springapp.common.Customer">
<!-- java.util.List -->
<property name="lists">
<list>
<value>1</value>
<ref bean="PersonBean" />
<bean class="com.springapp.common.Person">
<property name="name" value="sss" />
<property name="address" value="Hainan Haikou" />
<property name="age" value="28" />
</bean>
</list>
</property>
<!-- java.util.Set -->
<property name="sets">
<set>
<value>1</value>
<ref bean="PersonBean" />
<bean class="com.springapp.common.Person">
<property name="name" value="sss" />
<property name="address" value="Hainan Haikou" />
<property name="age" value="28" />
</bean>
</set>
</property>
<!-- java.util.Map -->
<property name="maps">
<map>
<entry key="Key 1" value="1" />
<entry key="Key 2" value-ref="PersonBean" />
<entry key="Key 3">
<bean class="com.springapp.common.Person">
<property name="name" value="sss" />
<property name="address" value="Hainan Haikou" />
<property name="age" value="28" />
</bean>
</entry>
</map>
</property>
<!-- java.util.Properties -->
<property name="pros">
<props>
<prop key="admin">admin@springapp.com</prop>
<prop key="support">support@springapp.com</prop>
</props>
</property>
</bean>