二 IOC再探

    關於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());
	}
相關文章
相關標籤/搜索