xml配置(一)

xml配置注入:

1、普通构造方法注入

在Spring的配置文件中声明你要注入的对象 例如:User

<bean class="com.itbaizhan.User" id="user1"/>

所谓的声明,就是将自己的信息告诉Spring容器,例如id和class,Spring容器根据class,通过反射(默认使用的是无参构造方法)就可以创建一个名为user1的User对象。

初始化Spring容器:

	@Before
	public void before(){
		ac = new ClassPathXmlApplicationContext("applicationContext.xml");
	}

初始化Spring容器后,可以看到User对象被创建出来了:

@Test
	public void test01(){
		User user = (User) ac.getBean("user");
		System.out.println(user);
	}

注意:上面的这种初始化方式,要求User类必须有一个无参构造方法,如果没有无参构造方法,会抛出如下异常:

No default constructor found; nested exception is java.lang.NoSuchMethodException: com.itbaizhan.User.<init>()

我们也可以通过类型直接获取一个bean的实例:

@Test
	public void test02(){
		User user = ac.getBean(User.class);
		System.out.println(user);
	}

注意:区别Spring配置文件中id和name:
在实际开发中,可以忽略id和name的区别,可以混用。
这两个是有区别的:

  • id="user1,user2,user3"表示bean有一个名字,这个名字就是user1,user2,user3
  • name="user1,user2,user3"表示bean有多个名字,多个名字分别是user1、user2以及user3
2、静态工厂注入

1、定义类的静态工厂方法:

public class UserFactory {
	public static User getInstance() {
		return new User();
	}
}

2、在xml文件中进行配置:
配置时注意指定静态工厂类以及静态方法

<bean class="com.sxt.factory.UserFactory" id="factory" factory-method="getInstance"/>

3、获取相应的实例:

	@Test
	public void test04(){
		User user = (User) ac.getBean("factory");
		System.out.println(user);
	}
3、实例工厂注入

实例工厂注入与静态工厂注入基本一致,主要区别体现在工厂方法是不是静态方法
实例工厂方法:

public class UserFactory2 {
	public User getInstance2() {
		return new User();
	}
}

注意:实例工厂配置,在xml文件中配置中,首先要先配置实例工厂的类,首先获取实例工厂的实例,然后再配置要 获取的实例类,通过factory-bean属性进行实例工厂的获取配置,获取想要获取的实例对象。
配置如下:

<bean class="com.sxt.factory.UserFactory02" id="userFactory02"/>
<bean class="com.sxt.pojo.User" id="user1" factory-bean="userFactory02" factory-method="getInstance02"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值