spring的IOC注解

1、創建對象的注解
含義:使用注解的形式創建對象,交給Spring容器管理(需要配置在類上)
@Component:組件
@Controller:web層
@Service:service層
@Repository:Dao層
?? 默認:創建對象的唯一標識,當前類名首字母小寫
?? value屬性:指定創建對象的唯一標識
舉例:
//1、使用@Component創建對象,唯一標識為:account。以下兩種任選其一,其中value可以指定唯一標識。
//@Component
@Component(value="account")
public class Account{}
//2、使用@Controller創建對象,唯一標識為:account。以下兩種任選其一,其中value可以指定唯一標識。
//@Controller
@Controller(value="account")
public class Account{}
//3、使用@Service創建對象,唯一標識為:accountServiceImpl。以下兩種任選其一,其中value可以指定唯一標識。
//@Service
@Service(value="accountServiceImpl")
public class AccountServiceImpl{}
//4、使用@Repository創建對象,唯一標識為:accountDaoImpl。以下兩種任選其一,其中value可以指定唯一標識。
//@Repository
@Repository(value="accountDaoImpl")
public class AccountDaoImpl{}

2、依賴注入的注解(可以理解為注入類中的屬性)
@AutoWired:
?? 默認:
?? ?1、按照類型(接口)從容器中查找對象,并注入。
?? ?2、按照屬性名作為唯一標識從容器中查找對象,并注入。
舉例:
public class AccountDaoImpl{
?? ?@AutoWired
?? ?private QueryRunner qr;
}
@Qulifier:配合@AutoWired一起使用配置到屬性上
?? ?按照指定的唯一標識從容器中查找對象,并注入
?? ?value:唯一標識
舉例:
public class AccountDaoImpl{
?? ?@AutoWired
?? ?@Qualifier(value="queryRunner2")
?? ?private QueryRunner qr;
}
@Resource:JDK提供的依賴注入的注解(按照指定唯一標識從容器中查找對象,并注入)
?? ?name屬性:唯一標識
舉例:
public class AccountDaoImpl{
?? ?@Resource(name="queryRunner")
?? ?private QueryRunner qr;
}
注意:1、@Resource是JDK提供的注解,且并不是所有的JDK版本都支持
????? 2、@Resource可以完全取代@AutoWired+@Qulifier
@Value:注入被Spring管理的properties文件中的內容
使用properties之前需要在bean.xml中解析
<!-- 解析properties文件 -->
<bean id="propertySource" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
?? ?<!-- set方式注入properties文件的路徑
?? ??? ?location:注入單個properties路徑
?? ??? ?locations:注入多個properties路徑
?? ?-->
?? ?<!-- <properties name="location" classpath="jdbc.properties"></properties> -->
?? ?<property name="locations">
?? ??? ?<array>
?? ??? ??? ?<value>classpath:jdbc.properties</value>
?? ??? ?</array>
?? ?</property>
</bean>

3、聲明周期相關的注解
@Scope:指定創建對象的作用域(作用范圍)
?? value:singleton:默認,單例 || prototype:多例
@PostConstruct:指定初始化方法(對象創建之后立即執行的方法)
@PreDestory:指定銷毀方法(僅單例對象有效),容器關閉,對象銷毀執行的方法
舉例
//默認的,可以的不寫
@Repository(value="accountDao")
@Scope("singleton")
public class AccountDao{

?? ?@PostConstruct
?? ?public void init(){
?? ??? ?System.out.println("創建對象之后執行的方法");
?? ?}

?? ?@PreDestory
?? ?public void destory(){
?? ??? ?System.out.println("銷毀之前執行的方法");
?? ?}
}

4、純注解編程
目的:替換xml配置文件
實現:需要將spring的配置信息,配置到類:配置類
@Configruation:聲明配置類
@ComponentScan:指定包掃描
?? ?basePackage:包名
@PropertySource:將properties配置文件交給speing容器管理
?? ?value:接受String類型數據(配置多個文件)
舉例:
//1、聲明配置類
//2、開啟包掃描
//3、將propertirs文件交給spring容器管理
@Configuration
@ComponentScan(basePackage="cn.wzq")
@PropertySource(value="classpath:jdbc.properties")
public class SpringConfig{}

@Bean:配置到方法上,表明此方法的返回值交給sring容器管理
舉例:
pubic class JdbcConfig{
?? ?@Bean(name="dataSource")
?? ?public DataSource getDataSource(){
?? ??? ?ComboPooledDataSource ds=new ComboPooledDataSource();
?? ??? ?ds.setUser("root");
?? ??? ?ds.setPassword("root");
?? ??? ?ds.setJdbcUel("jdbc:mysql:///speingdb");
?? ??? ?ds.setDriverClass("com.mysql.jdbc.Driver");
?? ??? ?return ds;
?? ?}

?? ?@Bean(name="queryRunner")
?? ?public QueryRunner getQueryRunner(DataSource dataSource){
?? ??? ?QueryRunner qr=new QueryRunner(dataSource);
?? ??? ?return qr;
?? ?}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273726.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273726.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273726.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PowerDesigner 逆向工程 從SQL文件轉換成PDM 從PDM轉成CDM

從SQL文件逆向工程到PDM&#xff1a; ①選擇file -> Reverse Engineer - > Database ②在General選項卡中選擇MySQL數據庫&#xff0c;點擊確定。 ③using script file 選擇你的sql文件&#xff0c;最后選擇確定。 從PDM轉成CDM&#xff1a; ①選擇工具 -> General CD…

SpringMvc的執行過程

Tomcat啟動 1、部署項目到Tomcat中 2、啟動Tomcat加載Web.xml 3、初始化DispatcherServlet(執行的是init方法) 4、加載配置文件&#xff0c;創建對象交給Spring容器管理 5、通過處理器映射器解析RequestMappin配置&#xff0c;配置‘請求地址’和‘控制器類’的映射關系 小結&a…

自然語言理解——introduction

1.基本概念&#xff1a; NLP&#xff1a;自然語言處理是研究如何利用計算機技術對語言文本&#xff08;句子、篇章或話語等&#xff09;進行處理和加工的一門學科&#xff0c;研究內容包括對詞法、句法、語義和語用等信息的識別、分類、提取、轉換和生成等各種處理方法和實現技…

Eclipse中彈出OLE Exception窗口

樓主事故原因&#xff1a;首先打開一個類&#xff0c;然后因為手速太快&#xff0c;在該類的編輯窗口中右鍵&#xff0c;單擊&#xff0c;不要問我點了啥&#xff0c;我也不知。后面發現該類的編輯器沒有顯示任何內容&#xff0c;但是可以發現代碼依然存在只是沒有顯示。 關閉…

HDOJ-3790-最短路徑問題 解題報告

一道最短路問題。普通最短路問題的邊只有一種權值&#xff0c;而此題的邊要考慮兩種權值。因為節點n<1000&#xff0c;所以不能夠使用Floyd算法&#xff0c;時間復雜度較高&#xff0c;這里使用Dijkstra算法解決。 中文描述&#xff0c;題意不再贅述。只是要注意每條邊都有距…

利用自定命令打開常用軟件,小白秒變大神。

不多說&#xff0c;先來個效果&#xff0c;WIINR打開運行&#xff0c;輸入qq(小編自定的命令)&#xff0c;就能打開。 實現步驟&#xff1a; 1、找到快捷方式(以騰訊QQ為例) 2、將騰訊QQ快捷方式復制粘貼到C:\Windows,并修改名稱 3、測試&#xff0c;winr代開運行&#xff0c;…

問題之JS中傳遞數值過大或前置有零時

1、JS中傳遞數值多大數值會變 var number 00161213313254545433 turnToDetail(number); function turnToDetail(queryNumber){ queryNumber ! 00161213313254545433(true) } 應將數值轉換為字符串 var number 00161213313254545433 turn…

rpm的用法 詳解

Linux rpm 命令參數使用詳解&#xff3b;介紹和應用&#xff3d; RPM是RedHat Package Manager&#xff08;RedHat軟件包管理工具&#xff09;類似Windows里面的“添加/刪除程序” rpm 執行安裝包二進制包&#xff08;Binary&#xff09;以及源代碼包&#xff08;Source&#x…

Android與Libgdx環境配置

此處所說的是基于windows和android版本的libgdx環境配置。 1. 下載所需軟件 JDK 1.7。 下載地址&#xff1a; window x86版本地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html Android SDK。 在android官網上下載最新版…

問題之sqlyou的使用

當數據過大時一定要注意sqlyou每頁只能顯示1000條數據

問題之mybatis-plus中的TableField、Tableld的區別

Tableld&#xff1a;屬性與主鍵的映射關系。 TableField:列與屬性的映射關系。

淺藍色設計類網站模板

淺藍色設計類網站模板是一款高端大氣的設計css3企業網站模板。 模板地址&#xff1a;http://www.huiyi8.com/sc/8673.html 轉載于:https://www.cnblogs.com/xkzy/p/3765371.html

html5中的一些標簽學習總結

html5 contenteditable"true" html5內容可編輯屬性 html5 hgroup hgroup字面意思是頭部的組&#xff0c;可以將其分拆為h和group來理解。在html5中的作用是用于對網頁和區塊的標題進行組合。&#xff08;網頁是一個最大的區塊&#xff0c;所以可以認為hgroup是區塊的…

總結1:Ajax上傳圖片至阿里云服務器

1.頁面效果以及JS <!-- HTML --> <div style"margin:30px;"><div class"form-horizontal rowt"><div class"control-label col-lg-1">標書分類</div><div class"col-lg-2"><select required&q…

Leetcode::Subsets

Given a set of distinct integers, S, return all possible subsets. 分析&#xff1a;題目就是給一個整數集合&#xff0c;給出所以的子集。 基本思想是遞歸或者說是迭代的方法。用前面得到的集合來構造 后面的。但是怎樣高效、方便的構造集合是關鍵點。比如&#xff0c;開始…

總結2:上傳圖片至指定服務器

1.前段頁面以及JS <!-- HTML --> <section class"content"><div class"row"><div class"col-xs-12"><div class"box box-success"><div class"row" style"margin-top: 1%;margin-bu…

蘋果新的編程語言 Swift 語言進階(一)--綜述

Swift 是蘋果開發和提供的供開發IOS 和OS X應用的一門新的語言。Swift語言基于C 和Objective-C語言&#xff0c;除了提供C 和Objective-C語言具有的所有語法功能外&#xff0c;為了編程方便和高效&#xff0c;Swift在語法上作了大量的優化和改進。 Swift采用安全編程模式&#…

總結3:IDEA中使用${pageContext.request.contextPath}填寫路徑時出錯

問題描述&#xff1a; 之前一個項目在eclipse中開發的&#xff0c;其中有使用到 <jsp:include page"${pageContext.request.contextPath}/../head.jsp"/>啟動項目成功&#xff0c;訪問出錯。在換到IDEA中啟動項目時提示路徑出錯&#xff0c;當把路徑修改為 …

操作12864(ST7920控制器)

引腳部分查看中文的12864介紹&#xff0c;下面這些可以在ST7920的英文數據手冊里查到。 Function Description 部分介紹工作方式、存儲器、操作方法。Instructions 部分介紹指令。按照并行或串行的 Timing Diagram 來操作&#xff0c;注意數據何時有效。查看初始化的流程圖&…

問題之傳遞參數名和接收參數名要一致。

前端傳遞發送的Ajax請求&#xff0c;請求參數為data data: {organizationId:$("#organId").val()},//data.field 后端接受參數 //錯誤接受參數 RequestMapping(value "") ResponseBody public Object findAll(Integer organId) { return…