(1)基本
用法基本同@Autowired,但是没有required属性,所以必须能找到装配
Provider
(2)限定
@Named类似于@Qualifier
例如
@Inject
@Named(“guitar”)
private Instrument instrument
(3)JSR-330的 Qualifier
但是不建议用该Qualifier,而是自我创建
@Target(。。。)
@Retention(。。。)
@Qualifier
public @interface StringedInstrument { 。。。 }
3.注解中使用表达式
符号: @Value
例如
@Value(“#{sytemProperties.myFavoriteSong}”)
private String song;
三、自动检测Bean
使用
可以不使用
base-package 指定所需扫描的包,找出能够自动注册为Bean的类
1.为自动检测标注Bean
@Component 构造型注解,标识该类为Spring组件
@Controller 标识该类定义为Spring MVC controller
@Repository 标识该类定义为数据仓库
@Service 标识该类定义为服务
例:
@Component
public cliass Guitar implements Instrument {
public void play() { .. }
}
Sping会自动将其注册为Bean,ID为类名 guitar
如果改为@Component(“test”),则ID为test
2.过滤组件扫描
(1)通过为
(2)5种过滤器
annotation:扫描使用指定注解(expression)所标注的类
assignable:扫描派生于expression所指定类型的类
aspectj:扫描与expression所指定AspectJ表达式匹配的类
custom:使用自定义的TypeFilter实现类,该类由expression指定
regex:扫描类的名称与expression所指定的正则表达式匹配的类
(1)(2)举例
上例假设自定义了@SkipIt注解,并在某些类上标注。
注册所有继承自Instrument的类为Bean;不注册所有标注了@SkipIt的类。
四、使用Spring基于Java的配置
1.使用Java配置Spring
首先仍然需要一些XML,启用Java配置。
2.定义配置类
@Configuration相当于
@Configuration
public class Springtest {}
3.声明Bean
@Bean告知Spring该方法将返回一个对象,并被注册为Bean,ID为方法名
@Bean
public Performer duke() {
return new Juggler();
}
4.基于Java的配置实现注入
只是在方法前加@Bean,确定为bean,目的何在?大幅增加程序代码??