二 IOC再探

    关于bean的初始化,之前小小的尝试了属性注入的方式,这次尝试一下使用构造方法注入,静态工厂方法注入及实例对象方法注入。

    说到底这种配置是非常简单的,只是由于时间的原因,总是会慢慢的忘掉。在这里做个小小的记号,方便日后查看,必竟看官方文档没有直接看自己的东西方便。下面看一看他们是如何配置的吧。

构造方法注入:

<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");
	}
}

实例对象方法注入

      <bean id="userFactory" class="org.tunie.learn.spring.ioc.model.UserFactory" />
	<bean id="instanceFactoryCreateUser" factory-bean="userFactory"
		factory-method="createUserInstance"></bean>

是不是很简单呢,下面看下单元测试代码

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());
	}

转载于:https://my.oschina.net/u/2011113/blog/324048

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值