1. 程式人生 > >面試:----Spring常用註解

面試:----Spring常用註解

使用註解來構造IoC容器

用註解來向spring容器註冊Bean。需要在applicationContext.xml中註冊<context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/>

如:在base-package指明一個包

1 <context:component-scan base-package="cn.gacl.java"/>

表明cn.gacl.Java包及其子包中,如果某個類的頭上帶有特定的註解【@Component/@Repository/@Service/@Controller】,就會將這個物件作為Bean註冊進Spring容器。也可以在<context:component-scan base-package=” ”/>中指定多個包,如:

1 <context:component-scan base-package="cn.gacl.dao.impl,cn.gacl.service.impl,cn.gacl.action"/>

多個包逗號隔開。

1、@Component

@Component
是所有受Spring 管理元件的通用形式,@Component註解可以放在類的頭上,@Component不推薦使用。

2、@Controller

@Controller對應表現層的Bean,也就是Action,例如:

1 @Controller
2 @Scope("prototype")
3 public class
UserAction extends BaseAction<User>{ 4 …… 5 }

使用@Controller註解標識UserAction之後,就表示要把UserAction交給Spring容器管理,在Spring容器中會存在一個名字為"userAction"的action,這個名字是根據UserAction類名來取的。注意:如果@Controller不指定其value【@Controller】,則預設的bean名字為這個類的類名首字母小寫,如果指定value【@Controller(value="UserAction")】或者【@Controller("UserAction")】,則使用value作為bean的名字

這裡的UserAction還使用了@Scope註解,@Scope("prototype")表示將Action的範圍宣告為原型,可以利用容器的scope="prototype"來保證每一個請求有一個單獨的Action來處理,避免struts中Action的執行緒安全問題。spring 預設scope 是單例模式(scope="singleton"),這樣只會建立一個Action物件,每次訪問都是同一Action物件,資料不安全,struts2 是要求每次次訪問都對應不同的Action,scope="prototype" 可以保證當有請求的時候都建立一個Action物件

3、@ Service

@Service對應的是業務層Bean,例如:

1 @Service("userService")
2 public class UserServiceImpl implements UserService {
3 ………
4 }

@Service("userService")註解是告訴Spring,當Spring要建立UserServiceImpl的的例項時,bean的名字必須叫做"userService",這樣當Action需要使用UserServiceImpl的的例項時,就可以由Spring建立好的"userService",然後注入給Action:在Action只需要宣告一個名字叫“userService”的變數來接收由Spring注入的"userService"即可,具體程式碼如下:

1 // 注入userService
2 @Resource(name = "userService")
3 private UserService userService;

注意:在Action宣告的“userService”變數的型別必須是“UserServiceImpl”或者是其父類“UserService”,否則由於型別不一致而無法注入,由於Action中的宣告的“userService”變數使用了@Resource註解去標註,並且指明瞭其name = "userService",這就等於告訴Spring,說我Action要例項化一個“userService”,你Spring快點幫我例項化好,然後給我,當Spring看到userService變數上的@Resource的註解時,根據其指明的name屬性可以知道,Action中需要用到一個UserServiceImpl的例項,此時Spring就會把自己建立好的名字叫做"userService"的UserServiceImpl的例項注入給Action中的“userService”變數,幫助Action完成userService的例項化,這樣在Action中就不用通過“UserService userService = new UserServiceImpl();”這種最原始的方式去例項化userService了。如果沒有Spring,那麼當Action需要使用UserServiceImpl時,必須通過“UserService userService = new UserServiceImpl();”主動去建立例項物件,但使用了Spring之後,Action要使用UserServiceImpl時,就不用主動去建立UserServiceImpl的例項了,建立UserServiceImpl例項已經交給Spring來做了,Spring把建立好的UserServiceImpl例項給Action,Action拿到就可以直接用了。Action由原來的主動建立UserServiceImpl例項後就可以馬上使用,變成了被動等待由Spring建立好UserServiceImpl例項之後再注入給Action,Action才能夠使用。這說明Action對“UserServiceImpl”類的“控制權”已經被“反轉”了,原來主動權在自己手上,自己要使用“UserServiceImpl”類的例項,自己主動去new一個出來馬上就可以使用了,但現在自己不能主動去new“UserServiceImpl”類的例項,new“UserServiceImpl”類的例項的權力已經被Spring拿走了,只有Spring才能夠new“UserServiceImpl”類的例項,而Action只能等Spring建立好“UserServiceImpl”類的例項後,再“懇求”Spring把建立好的“UserServiceImpl”類的例項給他,這樣他才能夠使用“UserServiceImpl”,這就是Spring核心思想“控制反轉”,也叫“依賴注入”,“依賴注入”也很好理解,Action需要使用UserServiceImpl幹活,那麼就是對UserServiceImpl產生了依賴,Spring把Acion需要依賴的UserServiceImpl注入(也就是“給”)給Action,這就是所謂的“依賴注入”。對Action而言,Action依賴什麼東西,就請求Spring注入給他,對Spring而言,Action需要什麼,Spring就主動注入給他。

4、@ Repository

@Repository對應資料訪問層Bean ,例如:

1 @Repository(value="userDao")
2 public class UserDaoImpl extends BaseDaoImpl<User> {
3 ………
4 }

@Repository(value="userDao")註解是告訴Spring,讓Spring建立一個名字叫“userDao”的UserDaoImpl例項。

當Service需要使用Spring建立的名字叫“userDao”的UserDaoImpl例項時,就可以使用@Resource(name = "userDao")註解告訴Spring,Spring把建立好的userDao注入給Service即可。

1 // 注入userDao,從資料庫中根據使用者Id取出指定使用者時需要用到
2 @Resource(name = "userDao")
3 private BaseDao<User> userDao;

相關推薦

面試:----Spring常用註解

使用註解來構造IoC容器 用註解來向spring容器註冊Bean。需要在applicationContext.xml中註冊<context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/&

Spring常用註解匯總

無法 pool 也會 ext XML eth ref 可選 xsd 使用註解之前要開啟自動掃描功能 其中base-package為需要掃描的包(含子包)。 1 <context:component-scan base-pack

spring常用註解(轉載http://elf8848.iteye.com/blog/442806)

odin Coding spa -c tle 類型 epo sta frame 1 引入context命名空間(在Spring的配置文件中),配置文件如下: Xml代碼 xmlns:context="http://www.springframework.org/

Spring常用註解用法總結

ams 依賴 對象 strong 設置 osi puts 渲染 多個 轉自http://www.cnblogs.com/leskang/p/5445698.html 1、@Controller 在SpringMVC 中,控制器Controller 負責處理由Dispatch

spring學習筆記四:spring常用註解總結

bean logs single 配置文件 屬性註入 ring 如果 let ons 使用spring的註解,需要在配置文件中配置組件掃描器,用於在指定的包中掃描註解 <context:component-scan base-package="xxx.xxx.xxx

spring常用註解

http ase cto man proxy tar details aspect 綁定 原文鏈接:http://blog.csdn.net/sudiluo_java/article/details/51858978 Spring 註解學習 聲明Bean的註解:

Spring常用註解總結

doc exc ise bject factor 功能 一個 ets -s 傳統的Spring做法是使用.xml文件來對bean進行註入或者是配置aop、事物,這麽做有兩個缺點:1、如果所有的內容都配置在.xml文件中,那麽.xml文件將會十分龐大;如果按需求分開.xml文

spring常用註解筆記

場景 HERE 需要 數據庫表 過多 文件中 取數 微服務 int spring常用註解解釋: 1. Mybatis的映射文件xxxMapper.xml中resultMap標簽的作用 resultMap標簽是為了映射select查詢出來結果的集合,其主要 作

12 種 Spring 常用註解

1.宣告bean的註解 @Component 元件,沒有明確的角色 @Service 在業務邏輯層使用(service層) @Repository 在資料訪問層使用(dao層) @Controller 在展現層使用,控制器的宣告(C) 2.注入bean的註解 @Autow

Java 必須掌握的 12 種 Spring 常用註解

1.宣告bean的註解 @Component 元件,沒有明確的角色 @Service 在業務邏輯層使用(service層) @Repository 在資料訪問層使用(dao層) @Controller 在展現層使用,控制器的宣告(C) 2.注入bean的註解

Spring常用註解介紹

Spring的一個核心功能是IOC,就是將Bean初始化載入到容器中,Bean是如何載入到容器的,可以使用Spring註解方式或者Spring XML配置方式。 Spring註解方式減少了配置檔案內容,更加便於管理,並且使用註解可以大大提高了開發效率! 下面按照分類講解Spring中常用

spring常用註解作用小結

1、@controller 控制器(注入服務) 2、@service 服務(注入dao) 3、@repository dao(實現dao訪問) 4、@component (把普通pojo例項化到spring容器中,相當於配置檔案中的) @Component,@Service,@Control

Java 必須掌握的 12 種 Spring 常用註解

1.宣告bean的註解 // 元件,沒有明確的角色 @Component // 在展現層使用,控制器的宣告(controller 層) @Controller // 在業務邏輯層使用(service層) @Service // 在資料訪問層使用(dao 層) @Reposit

spring boot去除掃描自動注入依賴方法——Spring常用註解使用方法

問題: 最近做專案的時候,需要引入其他的jar。然後還需要掃描這些jar裡的某些bean。於 是使用註解:@ComponentScan 這個註解直接指定包名就可以,它會去掃描這個包下所有的class,然後判斷是否解析: 原始碼: public @interface SpringBoo

Spring常用註解小結

版權宣告:本文為章魚哥原創文章,若要轉載,請註明出處 https://blog.csdn.net/qq_40388552/article/details/84777234  以往我們使用Spring框架進行開發,使用xml檔案來對bean進行注入或者是配置aop、事物,慢慢我們發現是在是太麻

最全Spring常用註解詳解

我們在開發的時候,會看到各種的註解,如果不細細研究下,傻傻的分不清楚,更談不上怎麼合理的利用了,接下來我們一起看下。 研究順序,從最常用的來,follow me [email protected]註解 用於標註控制層元件(如struts中的action)。如果@Controller不指

spring--常用註解

@Controller @Service @Repository @Component 都是用來把一個類宣告為spring中的bean bean的名稱預設是 類名稱的首字母小寫 如果要自定義bean的名稱,則可以給註解加上value屬性:@Controller(value='xxxx') @Contr

Spring學習總結(27)——Spring常用註解再總結

1、宣告Bean的註解 @Component  元件,沒有明確的角色。 @Service  在業務邏輯層使用(service層)。 @Repository  在資料訪問層使用(dao層)。 @Controller  在展現層使用,控制器的宣告(Controller層)

Java 必須掌握的 12 種 Spring 常用註解!(一)

1.宣告bean的註解: @Component 元件,沒有明確的角色 @Service 在業務邏輯層使用(service層) @Repository 在資料訪問層使用(dao層) @Controller 在展現層使用,控制器的宣告(Controller層)

spring常用註解備忘: @Configuration、@ConfigurationProperties、@Bean、@Qualifier

1,下面先給出這四個註解的使用場景程式碼: A,這四個註解的使用如下: /** * 卡牛徵信 */ @Configuration @ConfigurationProperties(prefix="cube.partner.conifg.kn") public clas