1笼恰、什么是注解
(1)注解是代碼特殊標(biāo)記仑最,格式:@注解名稱(屬性名稱=屬性值, 屬性名稱=屬性值…)
(2)使用注解辽话,注解作用在類上面肄鸽,方法上面,屬性上面
(3)使用注解目的:簡化 xml 配置
2、Spring 針對 Bean 管理中創(chuàng)建對象提供注解
下面四個注解功能是一樣的粤蝎,都可以用來創(chuàng)建 bean 實(shí)例
(1)@Component
(2)@Service
(3)@Controller
(4)@Repository
3外邓、基于注解方式實(shí)現(xiàn)對象創(chuàng)建
第一步 引入依賴 (引入spring-aop jar包)
第二步 開啟組件掃描
<!--開啟組件掃描
1 如果掃描多個包,多個包使用逗號隔開
2 掃描包上層目錄
-->
<context:component-scan base-package="com.atguigu"></context:component-scan>
第三步 創(chuàng)建類逮诲,在類上面添加創(chuàng)建對象注解
//在注解里面 value 屬性值可以省略不寫,
//默認(rèn)值是類名稱幽告,首字母小寫
//UserService -- userService
@Component(value = "userService") //注解等同于XML配置文件:<bean id="userService" class=".."/>
public class UserService {
????public void add() {
????System.out.println("service add.......");
????}
}
4梅鹦、開啟組件掃描細(xì)節(jié)配置
<!--示例 1
use-default-filters="false" 表示現(xiàn)在不使用默認(rèn) filter,自己配置 filter
context:include-filter 冗锁,設(shè)置掃描哪些內(nèi)容
-->
<context:component-scan base-package="com.atguigu" use-defaultfilters="false">
????<context:include-filter type="annotation"expression="org.springframework.stereotype.Controller"/><!--代表只掃描Controller注解的類-->
</context:component-scan>
<!--示例 2
????下面配置掃描包所有內(nèi)容
? ? context:exclude-filter: 設(shè)置哪些內(nèi)容不進(jìn)行掃描
-->
<context:component-scan base-package="com.atguigu">
????<context:exclude-filter type="annotation"expression="org.springframework.stereotype.Controller"/><!--表示Controller注解的類之外一切都進(jìn)行掃描-->
</context:component-scan>
5齐唆、基于注解方式實(shí)現(xiàn)屬性注入
(1)@Autowired:根據(jù)屬性類型進(jìn)行自動裝配
第一步 把 service 和 dao 對象創(chuàng)建,在 service 和 dao 類添加創(chuàng)建對象注解
第二步 在 service 注入 dao 對象冻河,在 service 類添加 dao 類型屬性箍邮,在屬性上面使用注解
@Service
public class UserService {
????//定義 dao 類型屬性
????//不需要添加 set 方法
????//添加注入屬性注解
????@Autowired
????private UserDao userDao;
????public void add() {
????System.out.println("service add.......");
????userDao.add();
????}
}//Dao實(shí)現(xiàn)類
@Repository
//@Repository(value = "userDaoImpl1")
public class UserDaoImpl implements UserDao {
? ? @Override
? ? public void add() {
? ? ? ? System.out.println("dao add.....");
? ? }
}
(2)@Qualifier:根據(jù)名稱進(jìn)行注入,這個@Qualifier 注解的使用叨叙,和上面@Autowired 一起使用
//定義 dao 類型屬性
//不需要添加 set 方法
//添加注入屬性注解
@Autowired //根據(jù)類型進(jìn)行注入
//根據(jù)名稱進(jìn)行注入(目的在于區(qū)別同一接口下有多個實(shí)現(xiàn)類锭弊,根據(jù)類型就無法選擇,從而出錯Kち病)
@Qualifier(value = "userDaoImpl1")
private UserDao userDao;
(3)@Resource:可以根據(jù)類型注入廷蓉,也可以根據(jù)名稱注入(它屬于javax包下的注解,不推薦使用!)
//@Resource //根據(jù)類型進(jìn)行注入
@Resource(name = "userDaoImpl1") //根據(jù)名稱進(jìn)行注入
private UserDao userDao;
(4)@Value:注入普通類型屬性
@Value(value = "abc")
private String name
6桃犬、完全注解開發(fā)
(1)創(chuàng)建配置類刹悴,替代 xml 配置文件
@Configuration //作為配置類,替代 xml 配置文件
@ComponentScan(basePackages = {"com.atguigu"})
public class SpringConfig {
}
(2)編寫測試類
@Test
public void testService2() {
//加載配置類
ApplicationContext context
????= new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = context.getBean("userService",UserService.class);
System.out.println(userService);
userService.add();
}
版權(quán)聲明:本文為CSDN博主「來點(diǎn)淦貨」的原創(chuàng)文章攒暇,遵循CC 4.0 BY-SA版權(quán)協(xié)議土匀,轉(zhuǎn)載請附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/weixin_45496190/article/details/107071204