Java Spring-IOC容器與Bean管理之基于注解的方式案例詳解
Spring-IOC容器-Bean管理-基于注解方式
什么是注解?
(1)注解是代碼特殊標(biāo)記,格式:@注解名稱(屬性名稱=屬性值, 屬性名稱=屬性值…)
(2)使用注解,注解作用在類上面,方法上面,屬性上面
(3)使用注解目的:簡化 xml 配置
Spring 針對 Bean 管理中創(chuàng)建對象提供注解
下面四個注解功能是一樣的,都可以用來創(chuàng)建 bean 實例
(1)@Component
(2)@Service
(3)@Controller
(4)@Repository
基于注解方式實現(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.......");
}
}
開啟組件掃描細(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>
基于注解方式實現(xiàn)屬性注入
① @Autowired:根據(jù)屬性類型進(jìn)行自動裝配
(1)第一步 把 service 和 dao 對象創(chuàng)建,在 service 和 dao 類添加創(chuàng)建對象注解。
(2)第二步 在 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實現(xiàn)類
@Repository
//@Repository(value = "userDaoImpl1")
public class UserDaoImpl implements UserDao {
@Override
public void add() {
System.out.println("dao add.....");
}
}
② @Qualifier:根據(jù)名稱進(jìn)行注入,這個@Qualifier 注解的使用,和上面@Autowired 一起使用
//定義 dao 類型屬性 //不需要添加 set 方法 //添加注入屬性注解 @Autowired //根據(jù)類型進(jìn)行注入 //根據(jù)名稱進(jìn)行注入(目的在于區(qū)別同一接口下有多個實現(xiàn)類,根據(jù)類型就無法選擇,從而出錯?。? @Qualifier(value = "userDaoImpl1") private UserDao userDao;
③ @Resource:可以根據(jù)類型注入,也可以根據(jù)名稱注入(它屬于javax包下的注解,不推薦使用?。?/p>
//@Resource //根據(jù)類型進(jìn)行注入 @Resource(name = "userDaoImpl1") //根據(jù)名稱進(jìn)行注入 private UserDao userDao;
④ @Value:注入普通類型屬性
@Value(value = "abc") private String name
完全注解開發(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();
}
到此這篇關(guān)于Java Spring-IOC容器與Bean管理之基于注解的方式案例詳解的文章就介紹到這了,更多相關(guān)Java Spring-IOC容器與Bean管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot 中 inputStream 神秘消失之謎(終破)
這篇文章主要介紹了springboot 中 inputStream 神秘消失之謎,為了能夠把這個問題說明,我們首先需要從簡單的http調(diào)用說起,通過設(shè)置body等一些操作,具體實現(xiàn)代碼跟隨小編一起看看吧2021-08-08
Mockito mock Kotlin Object類方法報錯解決方法
這篇文章主要介紹了Mockito mock Kotlin Object類方法報錯解決方法,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
springmvc+spring+mybatis實現(xiàn)用戶登錄功能(上)
這篇文章主要為大家詳細(xì)介紹了springmvc+spring+mybatis實現(xiàn)用戶登錄功能,比較基礎(chǔ)的學(xué)習(xí)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
spring Mvc配置xml使ResponseBody返回Json的方法示例
這篇文章主要給大家介紹了關(guān)于spring Mvc配置xml使ResponseBody返回Json的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
Java獲取http和https協(xié)議返回的json數(shù)據(jù)
本篇文章主要介紹了Java獲取http和https協(xié)議返回的json數(shù)據(jù) ,本篇文章提供兩個方法,幫助各位如何獲取http和https返回的數(shù)據(jù)。有興趣的可以了解一下。2017-01-01

