Study(4) SpringIOC 基于注解的依赖注入
1.依赖注入相关注解
(1).@Autowired 和 @Qualifier
a. 支持set方式注入和构造器方式注入
b. 当采用set方式注入时,可以将@Autowired添加到set方法前面,
(1).不使用@Qualifier,则容器会使用byType方式来注入,【autowire = byType】,
按照类型为Waiter查找spring 容器,有可能出错(当存在多个类型的bean)
(2).使用@Qualifier注解,明确指定要注入bean的id,【autowire = byName】
c.当采用构造器注入时,可以将该注解添加到对应的构造器前面示例A:set方式注入:
方式一:
private Waiter waiter;
@Autowired
public void setWaiter(@Qualifier("waiter") Waiter waiter) {
System.out.println("setWaiter()");
this.waiter = waiter;
}
方式二:
@Autowired
@Qualifier("waiter")
private Waiter waiter;
方式一和方式二区别:
方式一,赋值和输出语句;方式二,只赋值。示例B:构造器方式注入:
方式一:
private Waiter waiter;
@Autowired
public School(@Qualifier("waiter") Waiter waiter){
System.out.println("School(waiter)");
this.waiter = waiter;
}
方式二:
@Autowired
@Qualifier("waiter")
private Waiter waiter;
public School( Waiter waiter){
System.out.println("School(waiter)");
this.waiter = waiter;
} (2).@Resource(重点)
a.只支持set方式的注入
b.将该注解添加到set方法前或者属性前,使用name属性指定要注入的bean的id,@Resource(name = "waiter")
c.默认会按照byType方式注入@Resource(type = Waiter.class)示例
方式一:
private Waiter waiter;
@Resource(name = "waiter")
public void setWaiter(Waiter waiter) {
System.out.println("bar(waiter)");
this.waiter = waiter;
}
方式二:
@Resource(name = "waiter")
private Waiter waiter;
public void setWaiter(Waiter waiter) {
System.out.println("bar(waiter)");
this.waiter = waiter;
}2.@Value注解
(1).可以使用该注解来注入基本类型的值
@Value("悟空")
private String name;(2).可以使用该注解使用spring表达式
第一步:config.properties
pagesize=10
第二步:配置
<context:component-scan base-package="cn.com.sinodata.annotation.zj"/>
<util:properties id="config" location="classpath:config.properties"></util:properties>
第三步:
@Component
public class Manage {
@Value("#{config.pagesize}")
private String pageSize;
}
第四步:测试
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("annotation.xml");
Manage manage = applicationContext.getBean("manage", Manage.class);
System.out.println(manage.toString());(3).该注解可以添加在属性前,或者添加到对应的set方法前
方式一:
@Value("#{config.pagesize}")
private String pageSize;
方式二:
private String pageSize;
@Value("#{config.pagesize}")
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
文章标题:Study(4) SpringIOC 基于注解的依赖注入
发布时间:2020-04-23, 17:43:34
最后更新:2020-04-23, 17:43:35