spring组件注解和注入注解
一 组件注解
1.@Component 通用组件
2.@Service 业务层组件
3.@Respository 持久层组件
4.@Controller 控制层组件
这四个组件都是写在类的前面.@Service是业务层组件,@Respository是持久层组件,@Controller控制层组件.在目前的spring版本当中,@Component是通用的意思,一般写在比较中立的类的最前面;作用和其他三个是等同的;但是在web应用程序采用经典的分层结构时;后三个组件分别写在各自层的对应的类前面.
对应的组件扫描的配置文件如下:
<context:component-scan base-package="annotation"/> //扫描annotation包及子包下的所有文件
二 注解注入方式:(需要在类前面加@Component)
(1)使用set的方式注入
①set方法的注入:
写法一:@Autowired加到set方法前面,@Qualifier用来指定要注入的bean的id.
注,如果不使用@Qualifier,会使用byType的方式来注入;如:
@Autowired
public void setWt(@Qualifier("wt")Waiter wt){
System.out.println("setWt()");
this.wt=wt;
}
写法二:@Autowired可以加到属性前;如:
@Autowired
@Qualifier("wt")
private Waiter wt;
② @Resource添加到set方法前面,使用name属性来指定要注入的bean的id
@Resource也可以添加到属性前;如:
@Resource(name="wt")
private Waiter wt;
Setter注入推荐用@Resource
③ @Inject/@Named
用法和@Autowired用法一致,需要额外导包
(2)使用构造器注解
① @Autowired也可以加到属性前
@Autowired
public School(@Qualifier("wt")Waiter wt){
System.out.println("School's 带参构造器");
this.wt=wt;
}
构造器注入推荐使用@Autowired
② @Inject/@Named
用法和@Autowired用法一致,需要额外导包