spring bean 的作用域之間有什么區別


spring bean 的作用域之間有什么區別?

spring容器中的bean可以分為五個范圍。所有范圍的名稱都是說明的,

1.singleton:這種bean范圍是默認的,這種范圍確保不管接受到多個請求,每個容器中有一個bean的實例,單利模式由bean factory自身來維護。

2.Protype:原先通過范圍與單例范圍相反,為每一個bean請求提供一個實例。

3.request:在請求bean范圍內會每一個來自客戶端的網絡請求創建一個實例,在請求完成之后,bean會失效並被垃圾回收器回收。

4.session:與請求范圍類似,確保每個session中的bean的實例在session過期后bean會隨之消失。

5.global-session:global-session和portlet公用全局存儲變量的話,那么這全局變量需要存儲在global-session中。

什么spring inner beans?

在spring框架中,無論何時bean被使用時,當今被調用了一個屬性,一個明智的做法是將這個bean聲明的內部bean。內部bean可用於setter注入“屬性”和構造參數注入“構造參數”來實現。

比如在我們的應用程序中,一個Customer類引用了person類我們的要做的是創建一個Person的實例,然后在Customer內部使用。

public class Customer{ private Person person; //Setters and Getters
} public class Person{ private String name; private String address; private int age; //Setters and Getters
} 內部bean的聲明方式如下: <bean id="CustomerBean" class="com.howtodoinjava.common.Customer">
    <property name="person">
        <!-- This is inner bean -->
        <bean class="com.howtodoinjava.common.Person">
            <property name="name" value="lokesh" />
            <property name="address" value="India" />
            <property name="age" value="34" />
        </bean>
    </property>
</bean>
View Code

spring框架中的單例beans是線程安全嗎?

spring褲架並沒有單例bean進行任何多線程的封裝和處理,關於單列bean的線程安全和並發問題需要開發着自己去搞定。但是實際上,大部分的spring  bean並沒有可變狀態,所以在某種程度上說spring單例bean是線程安全帶的。如果多線程狀態的話,就需要自行保證線程安全。

請舉例說明如何在spring中注入以個javacollection

spring提供四種集合類的配置元素:

<list>:該標簽用來配置可重復的list值

<set>:該標簽用來裝配沒有重復的set值

<map>:該標簽可用來注入鍵和值可以為任何類型的鍵值對

<props>:該標簽支持注入鍵和值都是字符串類型。

下面看一下具體的例子: <beans>
   <!-- Definition for javaCollection -->
   <bean id="javaCollection" class="com.howtodoinjava.JavaCollection">
      <!-- java.util.List -->
      <property name="customList">
        <list>
           <value>INDIA</value>
           <value>Pakistan</value>
           <value>USA</value>
           <value>UK</value>
        </list>
      </property>

     <!-- java.util.Set -->
     <property name="customSet">
        <set>
           <value>INDIA</value>
           <value>Pakistan</value>
           <value>USA</value>
           <value>UK</value>
        </set>
      </property>
     <!-- java.util.Map -->
     <property name="customMap">
        <map>
           <entry key="1" value="INDIA"/>
           <entry key="2" value="Pakistan"/>
           <entry key="3" value="USA"/>
           <entry key="4" value="UK"/>
        </map>
      </property>
      <!-- java.util.Properties -->
    <property name="customProperies">
        <props>
            <prop key="admin">admin@nospam.com</prop>
            <prop key="support">support@nospam.com</prop>
        </props>
    </property>

   </bean>
</beans>

如何向Spring Bean中注入一個Java.util.Properties?

第一種方法是使用如下面代碼所示的<props> 標簽:

<bean id="adminUser" class="com.howtodoinjava.common.Customer">

    <!-- java.util.Properties -->

    <property name="emails">

        <props>

            <prop key="admin">admin@nospam.com</prop>

            <prop key="support">support@nospam.com</prop>

        </props>

    </property>

</bean>

 

也可用”util:”命名空間來從properties文件中創建出一個propertiesbean,然后利用setter方法注入bean的引用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM