spring IOC容器的三种注入方式

spring IOC容器的三种注入方式

  1. set方法注入
    把需要注入的类写成属性,给它设置一个set方法。实现代码如下:
public class B {
	private A a;
	public void setA(A a){
		this.a == a;
	}
}

接着在配置文件中类A注入到类B里面去

<bean id="aa" class="com.study.jyl.A"></bean>
<bean id="bb" class="com.study.jyl.B">
	<property name="a" ref="aa"></property>
</bean>

这样就完成了一个简单的set方法注入操作

  1. 构造器注入
    同set方法注入一样,首先把需要注入的类写成属性,然后使用构造方法。实现代码如下:
public class B {
	private A a;
	public B(A a){
		this.a == a;
	}
}

接着在配置文件中

<bean id="aa" class="com.study.jyl.A"></bean>
<bean id="bb" class="com.study.jyl.B">
	<constructor-arg name="a" ref="aa"></constructor-arg>
</bean>

这样就完成了一个简单的构造器注入操作

  1. 注解注入
    使用注解连线,默认情况下在spring容器中是不打开的。
    所以在我们使用注解注入时,需要在配置文件中加上<context:annotation-config/>来启动它

常用的几个注解:
@Required
应用于bean属性的setter方法
使用该注解的属性必须在配置文件中设置,否则容器会抛出一个BeanlnitializationException异常

public class B {
	private A a;
	
	@Required
	public void setA(A a){
		this.a == a;
	}
}
@Autowired

自动按照类型注入
类型不唯一时,他会把属性名作为bean的id在容器中查找

public class B {
	private A a;
	
	@Autowired
	public void setA(A a){
		this.a == a;
	}
}
@Qualifier

在按照类型注入的基础上,再按照bean的id注入。
他在类成员注入数据时,不能独立使用,但是在给方法的形参注入数据时,可以独立使用。
属性value用于指定bean的id

@Resource

使用属性name指定bean的id

@Configuration 和 @Bean

@Configuration 表示这个类可以使用spring IOC容器作为bean定义的来源
@Bean 返回一个对象,该对象被注册为spring应用程序上下文中的bean
不需配置XML文件,直接采用注解

@Configuration
public class C {
	
	@Bean
	public A a(){
		System.out.println("创建A的bean");
		return new A();
	}
	
	@Bean
	public B b(){
		System.out.println("创建B的bean");
		return new B(a());
	}
}

使用类的反射去拿到对象:

public class Test {

	public static void main(String[] args) {
	ApplicationContext ac =	new AnnotationConfigApplicationContext(C.class);
	B b = (B) ac.getBean(B.class);
	b.bb();
	}
}
  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值