通過反射來建立物件,避免通過new關鍵字
讀取配置檔案來獲取要建立的物件的全限定類名(唯一標誌)
持久層業務層
持久層呼叫jdbc,業務層呼叫持久層,表現層呼叫業務層,會存在類相互依賴的情況,需要解耦
編譯期依賴:沒有某個類,不能正常編譯
實際開發應做到,編譯期不依賴,執行時依賴
spring的ioc容器是map結構,乙個id對應乙個object
spring boot
參考筆記
註解只有乙個屬性,且屬性名是value,則value可以不寫springboot
spring
@autowired
作用:自動按照型別注入,只要容器中有唯一的bean物件型別和要注入的變數型別匹配,就可以注入成功,在ioc容器中不考慮id,直接查詢object的類名
出現位置:可以在變數上,也可以在方法上,
匹配過程:先尋找類名一致的,在類名一致的前提下,檢視bean的id是否有和要注入變數的名字一樣的,若有,則注入,否則報錯。
@bean
作用:用於把當前方法的返回值作為bean物件存入spring的ioc容器中,預設是單例的,
屬性:
@bean
@scope('prototype')
private ***x ***x() {}
@component
在持久層、業務層和控制層中,分別採用@repository(持久層)、@service(業務層)和@controller(表現層)對分層中的類進行命名,而用@component對那些比較中立的類進行命名。
作用:將當前類存放到spring容器中
屬性:
// 以下3中情況都相同
@component(value='***')
@component('***')
@component
public class *** {}
@componentscan
作用:用於通過註解指定spring在建立容器時要掃瞄的包
屬性:
@component(value="***.***")
@component("***.***")
@configuration
作用:指定當前類是乙個配置類
@import
作用:允許從另乙個配置類中載入 @bean 定義
@configuration
@import(configa.class)
@postconstruct
作用:初始化執行方法,用於@component之類的方法上
@predestroy
作用:銷毀方法,多例spring不負責銷毀方法,只有單例負責,用於@component之類的方法上
@propertysource
作用:用於指定properties檔案的位置
@propertysource("classpath:jdbc.properties")
屬性:
@qualifier
作用:按照型別注入的基礎上再按照名稱注入,給類成員注入時不能單獨使用,但是在給方法引數注入時可以。
屬性:@scope
作用:用於指定bean的作用範圍
屬性:@value
作用:用於注入基本型別和string型別的資料
屬性:spring mvc
valuestring getdynamicurivalue(@pathvariable string id)method
consumes
produces
params
headers
string default() {}
@restcontroller
public class indexcontroller ) // 返回訊息是json型別
@responsebody
string getproduces()
}) // 接受訊息是json和xml型別,{} 指定多個訊息頭
string getconsumes() }
@requestparam
作用: 處理?key=value1&key2=value2
public string getuserblog(@requestparam("id") int blogid)
@requestparam mapparams
// 這樣當我們訪問/user?id=123時,spring mvc幫助我們將request引數id的值繫結到了處理函式的引數blogid上。這樣就能夠輕鬆獲取使用者輸入,並根據它的值進行計算並返回了。
相信大家可能注意到了,@requestparam
和@pathvariable
都能夠完成類似的功能——因為本質上,它們都是使用者的輸入,只不過輸入的部分不同,乙個在url路徑部分,另乙個在引數部分。要訪問一篇部落格文章,這兩種url設計都是可以的:
那麼究竟應該選擇哪一種呢?建議:
當url指向的是某一具體業務資源(或者資源列表),例如部落格,使用者時,使用@pathvariable
當url需要對資源或者資源列表進行過濾,篩選時,用@requestparam
例如我們會這樣設計url:
更多用法
一旦我們在方法中定義了@requestparam
變數,如果訪問的url中不帶有相應的引數,就會丟擲異常——這是顯然的,spring嘗試幫我們進行繫結,然而沒有成功。但有的時候,引數確實不一定永遠都存在,這是我們可以通過定義required
屬性:
@requestparam(name="id",required=false) // 預設是true,也就是必須傳這個引數
// 當然,在引數不存在的情況下,可能希望變數有乙個預設值:
@requestparam(name="id",required=false,defaultvalue="0")
@requestbody
如果把json作為引數傳遞,我們可以使用@requestbody接收引數,將資料轉換map:
@pathvariable
是用來獲得請求url中的動態引數的
@requestheader
@cookievalue
@modelattribute
@sessionattribute
get
Spring常用註解
spring常用註解 1 引入context命名空間 在spring的配置檔案中 配置檔案如下 xml xmlns context spring context 2.5.xsd 開啟配置 spring 會自動掃瞄cn.pic包下面有註解的類,完成bean的裝配。xml xmlversion 1.0 ...
Spring常用註解
在spring中常用的註解 autowired註解 不推薦使用,建議使用 resource autowired可以對成員變數 方法和建構函式進行標註,來完成自動裝配的工作。autowired的標註位置不同,它們都會在spring在初始化這個bean時,自動裝配這個屬性。要使 autowired能夠工...
spring常用註解
1 引入context命名空間 在spring的配置檔案中 配置檔案如下 xml 收藏 xmlns context spring context 2.5.xsd 開啟配置 spring 會自動掃瞄cn.pic包下面有註解的類,完成bean的裝配。xml xmlns xmlns xsi xmlns c...