学习笔记之bean的自动装配

bean的自动装配

什么是bean的自动装配?

假如一个类要调用另一个类,那么我们之前的方法是把被调用的类在<property />中调用它。如图:

有了自动装配就不用麻烦了,接下来介绍自动装配bean。

首先自动装配bean需要<bean>中调用autowire如同<bean id="xx" class="xx" autowrie="  ">

autowire中有6个属性分别是byName,  byType,constructor,autodetect,defualt,no这六个属性

接下来配合代码一一讲解

先看两个类文件

调用的类文件

package it.autowire;


public class Person {

private String name;
private Dog dog;//这个变量的类型是被调用类


public Person() {

}
//当xml文件中autowire的参数是constructor时,则会调用构造函数中类型与被调用bean类型匹配的bean
public Person(Dog dog) {
System.out.println("通过构造器配置");
this.dog=dog;

}




public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}

 

}

被调用的类文件:

package it.autowire;


public class Dog {
 private String name;


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}
 

}

Test类:

package it.autowire;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


import it.bean.assemble.AllKindsService;


public class Test {


public static void main(String[] args) {
// TODO 自动生成的方法存根
   ApplicationContext ac=new ClassPathXmlApplicationContext("it/autowire/beans.xml");
   Person per=(Person) ac.getBean("person");

   System.out.println(per.getName()+"的狗是"+per.getDog().getName());//使用红体方法时,需要调用dog对象

}


}

byName:

会查找在调用类调用的类的类型的变量相同的对象名,并实现匹配,并完成装配(在person类中Dog对象的变量dog就和xml文件中id="dog"相匹配并调用

xml文件

 

 

byType:

寻找属性类型相同的bean,找不到,装不上,找到多个抛异常。变量dog的类型是Dog,所以和在xml文件类型是Dog的dog相匹配完成注入,如果有多个可以对不需要进行自动装配的bean设置属性autowire-candidate="false"

 

 

constructor:

查找和bean的构造参数一致的一个或 多个bean,若找不到,抛异常。按照参数的类型装配 

这个类型在类文件中会有点变化

public Person(Dog dog) {
System.out.println("通过构造器配置");
this.dog=dog;

}//需要这样一个构造函数,他的参数被调用的类型,且完成赋值

autodetect:

如果对象没有无参数的构造方法,那么自动选择constructor的自动装配方式进行构造注入。如果对象含有无参数的构造方法,那么自动选择byType的自动装配方式进行setter注入。        

default:

default这个需要在<beans defualt-autorwire=“指定”,指定后,autowire的值默认就是defaulit——autowire中指定的值

no:

不装配

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值