关于bean的初始化,之前小小的尝试了属性注入的方式,这次尝试一下使用构造方法注入,静态工厂方法注入及实例对象方法注入。
说到底这种配置是非常简单的,只是由于时间的原因,总是会慢慢的忘掉。在这里做个小小的记号,方便日后查看,必竟看官方文档没有直接看自己的东西方便。下面看一看他们是如何配置的吧。
构造方法注入:
只需要用到constructor-arg标签,还有就是User类需要有一个两个参数的构造函数。
静态工厂方法注入:
这里用到了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"); }}
实例对象方法注入
是不是很简单呢,下面看下单元测试代码
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()); }