網(wǎng)站首頁 編程語言 正文
@Repository和@Controller、@Service、@Component的作用差不多,都是把對象交給spring管理。
1. @Controller控制層
@Controller用于標(biāo)記在一個類上,使用它標(biāo)記的類就是一個SpringMvc Controller對象,分發(fā)處理器會掃描使用該注解的類的方法,并檢測該方法是否使用了@RequestMapping注解。
@Controller只是定義了一個控制器類,而使用@RequestMapping注解的方法才是處理請求的處理器。
@Controller標(biāo)記在一個類上還不能真正意義上說它就是SpringMvc的控制器,應(yīng)為這個時候Spring還不認(rèn)識它,這個時候需要把這個控制器交給Spring來管理。
@Controller表示在tomcat啟動的時候,把這個類作為一個控制器加載到Spring的Bean工廠,如果不加,就是一個普通的類,和Spring沒有半毛錢關(guān)系。
有兩種方式可以管理:
<!--基于注解的裝配-->
<!--方式一-->
<bean class="com.HelloWorld"/>
<!--方式二-->
<!--路徑寫到controller的上一層-->
<context:component-scan base-package="com"/>
Action層:
package com;
@Controller
public class HelloWorld{
@RequestMapping(value="/showRegUser")
public String printHello() {
return "hello";
}
@Autowried
private IocSerevce service;
public void add(){
service.add();
}
}
component-scan默認(rèn)掃描的注解類型是@Component,不過,在@Component的語義基礎(chǔ)之上細(xì)化為@Reposity,@Service,@Controller.
有一個use-defaultbao’i-filters屬性,屬性默認(rèn)是true,表示會掃描抱下所有的標(biāo)有@Component的類,并注冊為bean,也就是@Component的子注解@Service,@reposity等
如果只想掃描包下的@Controller或其他內(nèi)容,則設(shè)置use-default-filters屬性為false,表示不再按照scan指定的包進(jìn)行掃描,而是按照指定包進(jìn)行掃描。
<context:component-scan base-package="com" user-default-filters="false">
<context:include-filter type="regex" expression="com.tan.*"/>
</context:component-scan>
2. @Service()
此注注解屬于業(yè)務(wù)邏輯層,service或者manager層。
默認(rèn)按照名稱進(jìn)行裝配,如果名稱可以通過name屬性指定,如果沒有name屬性,注解寫在字段上時,默認(rèn)去字段名進(jìn)行查找,如果注解寫在setter方法上,默認(rèn)按照方法屬性名稱進(jìn)行裝配。當(dāng)找不到匹配的bean時,才按照類型進(jìn)行裝配,如果name名稱一旦指定就會按照名稱進(jìn)行裝配。
Service層:
@Service()
public class IocService{
@Resource
private IIocDao iiocDao;
public void add(){
iiocDao.add();
}
}
3. @Repository持久層
此注解式持久層組件,用于標(biāo)注數(shù)據(jù)訪問組件,即DAO組件
DAO層
先定義一個接口:
public interface IIocDao{
public void add();
}
然后實(shí)現(xiàn)類:
//Dao層中定義了一些接口
//表示將Dao類聲明為bean
@Repository
public class IocDao implements IIocDao{
public void add(){
System.out.println("調(diào)用了Dao");
}
}
另外一種解釋: @Repository對應(yīng)數(shù)據(jù)訪問層Bean
@Repository(value="userDao")
public class UserDaoImpl extends BeansDaoImpl<User>{
......
}
@Repository(value=“userDao”)注解告訴Spring ,讓Spring創(chuàng)建一個名字叫做"userDao"的UserDapImpl實(shí)例。
當(dāng)Service需要使用Spring創(chuàng)建的名字叫“userDao”的UserDaoImpl實(shí)例時,就可以使用@Resource(name=“userDao”)注解告訴Spring,Spring把創(chuàng)建好的userDao注入給Service即可。
//注入userDao,從數(shù)據(jù)庫中根據(jù)用戶Id取出指定用戶時需要用到
@Resource(name = "userDao")
private BaseDao<User> userDao;
原文鏈接:https://blog.csdn.net/Mr_VK/article/details/122762743
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-05-13 python魔法方法之__setattr__()_python
- 2022-09-10 Go語言O(shè)RM包中使用worm構(gòu)造查詢條件的實(shí)例詳解_Golang
- 2023-10-11 MP、MybatisPlus、聯(lián)表查詢、自定義sql、Constants.WRAPPER、ew (二
- 2022-04-28 WPF使用WrapPanel環(huán)繞面板布局_實(shí)用技巧
- 2022-06-21 Android基于Sqlite實(shí)現(xiàn)注冊和登錄功能_Android
- 2023-07-26 vite中的glob-import批量導(dǎo)入
- 2022-03-20 C#中實(shí)現(xiàn)PriorityQueue優(yōu)先級隊列的代碼_C#教程
- 2022-11-02 Flask框架debug與配置項(xiàng)的開啟與設(shè)置詳解_python
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支