Java

Spring Bean基础

2017-04-28  本文已影响60人  ChanHsu

引用

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个主要的集合类型:

    <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>
上一篇 下一篇

猜你喜欢

热点阅读