關於bean的初始化,以前小小的嘗試了屬性注入的方式,此次嘗試一下使用構造方法注入,靜態工廠方法注入及實例對象方法注入。
java
說到底這種配置是很是簡單的,只是因爲時間的緣由,老是會慢慢的忘掉。在這裏作個小小的記號,方便往後查看,必竟看官方文檔沒有直接看本身的東西方便。下面看一看他們是如何配置的吧。
spring
構造方法注入:app
<bean id="defaultUser" class="org.tunie.learn.spring.ioc.model.User"> <constructor-arg value="Tunie"/> <constructor-arg value="tomailxj@163.com"/> </bean>
只須要用到constructor-arg標籤,還有就是User類須要有一個兩個參數的構造函數。函數
靜態工廠方法注入:單元測試
<bean id="staticFactoryCreateUser" class="org.tunie.learn.spring.ioc.model.UserFactory" factory-method="createUser"></bean>
這裏用到了UserFactory類及其createUser方法,UserFactory類代碼以下:測試
public class UserFactory { public static User createUser() { return new User("Tunie", "tuniemail.@163.com"); } public User createUserInstance() { return new User("Cindy", "184714293@qq.com"); } }
實例對象方法注入spa
<bean id="userFactory" class="org.tunie.learn.spring.ioc.model.UserFactory" /> <bean id="instanceFactoryCreateUser" factory-bean="userFactory" factory-method="createUserInstance"></bean>
是否是很簡單呢,下面看下單元測試代碼code
public void testAdd() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserServer server = applicationContext.getBean("userServer", UserServer.class); //使用getter、setter方法實例化User對象 User user = applicationContext.getBean("user",User.class); server.add(user); //使用構造函數實例化User對象 User defaultUser = applicationContext.getBean("defaultUser",User.class); server.add(defaultUser); //使用靜態方法實例化User對象 User staticFactoryCreateUser = applicationContext.getBean("staticFactoryCreateUser",User.class); server.add(staticFactoryCreateUser); //使用實例的方法實例化User對象 User instanceFactoryCreateUser = applicationContext.getBean("instanceFactoryCreateUser",User.class); server.add(instanceFactoryCreateUser); assertEquals("Tunie", user.getName()); assertEquals("Tunie", defaultUser.getName()); assertEquals("Tunie", staticFactoryCreateUser.getName()); assertEquals("Cindy", instanceFactoryCreateUser.getName()); }