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>
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的引用。