????????????????????????使用注解定義Bean
Spring2.5引入使用注解去定義Bean
????@Component描述Spring框架中Bean
? ? 在xml中引入context
xmlns:context="http://www.springframework.org/schema/context"
? ? 在xml中配置需要的包
<context:component-scan base-package="cn.jiaoshoublog.demo1"/>
? ? 在這個(gè)包中的類使用Component注解
package cn.jiaoshoublog.demo1;
import org.springframework.stereotype.Component;
@Component("userService")
public class UserService {
????public String sayHello(String name) {
????????return "Hello"+name;
????}
}
除了@Component外, Spring提供了3個(gè)功能基本和@Component等效的注解
? @Repository用于對(duì)DAO實(shí)現(xiàn)類進(jìn)行標(biāo)注
? @Service用于對(duì)Service實(shí)現(xiàn)類進(jìn)行標(biāo)注
? @Controller用于對(duì)Controller實(shí)現(xiàn)類進(jìn)行標(biāo)注
這三個(gè)注解是為了讓標(biāo)注類本身的用途清晰,?Spring在后續(xù)版本會(huì)對(duì)其增強(qiáng)
@value注解,對(duì)簡(jiǎn)單屬性的注解
package cn.jiaoshoublog.demo1;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserService {
@Value("屎")
private String something;
????public void eat() {
????????System.out.println("吃:"+something);
????}
}
如果使用此類中的eat會(huì)打印出? “ 吃:屎 ”
@Autowired按類型來(lái)注入瘪吏,注入的對(duì)象是安裝類來(lái)注入的
使用@Autowired進(jìn)行自動(dòng)注入
? @Autowired默認(rèn)按照類型進(jìn)行注入
? ????如果存在兩個(gè)相同Bean類型相同,則按照名稱注入
? @Autowired注入時(shí)可以針對(duì)成員變量或者set方法
? 通過(guò)@Autowired的required屬性,設(shè)置-定要找到匹配的Bean
? 使用@Qualifier指定注入Bean的名稱
????使用Qualifier指定Bean名稱后,注解Bean必須指定相同名稱
使用方法
package cn.jiaoshoublog.demo1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserService {
????@Autowired
????@Qualifier("UserDao")//指定Bean名
? ? private UserDaouserDao;
? ? public void save() {
????????System.out.println("Service中的保存用戶");
? ? ? ? userDao.save();
? ? }
}
被注入的對(duì)象
package cn.jiaoshoublog.demo1;
import org.springframework.stereotype.Repository;
//使用@Autowired注入和@Repository("xxx")中的xxx沒(méi)有任何關(guān)系?
@Repository("UserDao")? ? ??
public class UserDao {
????public void save() {
????System.out.println("Dao中的保存用戶");
????}
}
Spring提供對(duì)JSR-250中定義@Resource標(biāo)準(zhǔn)注解的支持
@Resdurce和@Autowired注解功能相似
使用方法相當(dāng)于上面的兩行代碼@Autowired? ? @Qualifier("UserDao")
這兩行代碼相當(dāng)于 @Resdurce(name="UserDao")
其他注解
Spring初始化bean或銷毀bean時(shí),有時(shí)需要作一些處理工作,因此spring可以在創(chuàng)建和拆卸bean的時(shí)候調(diào)用bean的兩個(gè)生命周期方法馏予。@Scope()來(lái)指定單例還是多例