spring 幾點基礎內容

一、Spring配置
基於XML、註解、java類 三種方式。

基於XML
文件頭部分<beans >:
(Schema格式)
一、指定命名空間的名稱
1,默認命名空間,沒有空間名,用於bean的定義
2,xsi命名空間,用於爲每個文檔中命名空間指定相應的Schema樣式文件,是標準組織定義的標準命名空間
3,各種自定義的命名空間
二、指定命名空間的Schema文檔樣式文件的位置
4,相應命名空間的Schema文檔文件
【沒有p和xsi】?

bean部分<bean />:
<bean id="car" class="com.gome.xxx.Car"/>
id不能重複,可以用 getBean("car")獲得容器中的bean
<bean name="bmw" class="com.gome.xxx.Car"/>
<bean name="bmw,audi" class="com.gome.xxx.Car"/>
name可以重複,也可以給一個bean定義多個name,而且可以使用任意字符,可以getBean("name"),重名的話,獲取最後覆蓋的那個bean

Spring註解

註解形式是相對於配置xml形式更方便的一種實現依賴注入的方式。

  • @Component 是一個泛化的概念,僅僅表示一個組件 (Bean) ,可以作用在任何層次。
  • @Service 通常作用在業務層,目前該功能與 @Component 相同。
  • @Controller 通常作用在控制層,目前該功能與 @Component 相同。
  • @Repository 定義Dao層bean  
   *定義實體Bean,使用配置文件-屬性注入或者構造方法注入 來完成。

例如:
@Component("userDao")
public class UserDao(){
}
,參數("userDao")可以省略,默認爲name=首字母小寫的類名,由於容器中的大部分bean都是單例的,所以通常不需要指定名稱。

注入bean時,@Autowired,默認按類型匹配,且如果目標類是接口的實現類,則要注入接口。如果該接口下有多個實現類都在容器中,則使用@Autowired@Qualifier("name")按照名字來注入


另,@Resource是按照名稱匹配,作用類似於@Autowired,可以加參數("name")



利用註解讀取配置文件中的屬性:

1,在xml中加入

<util:properties id="accountSecurityConfig" location="classpath:config/AccountSecurityToolsConfig.properties" />

2,在@Component標註的類中可以使用
@Value("#{accountSecurityConfig[tokenExpire]}")
 private Integer tokenExpire;

即可實現讀取AccountSecurityToolsConfig.properties中的屬性tokenExpire的值,賦給Integer tokenExpire


指定控制器中對HTTP請求的處理方法的對應路徑, @RequestMapping
一個控制器可以擁有多個對應不同請求路徑的處理方法。請求的參數會根據參數名稱默認契約自動綁定到響應方法的入參中。
 @RequestMapping(value="/loginCheck.heml")
    public ModelAndView loginCheck(HttpServletRequest request,LoginCommand loginCommand){}
相應請求的方法可以返回一個ModelAndView ,或直接返回一個字符串,SpringMVC會解析之並轉目標相應界面。
ModelAndView對象包括了視圖信息和視圖渲染所需的模型數據信息,代表一個視圖。


Bean的作用域
類別
說明
singleton
單實例,整個IOC容器中只有一個Bean實例
prototype
每次從容器中調用Bean時,都會返回一個新的實例
request
每次HTTP請求都會創建一個新的Bean
session
同一個HTTP Session共享一個Bean
globalSession
同一個全局Session共享一個Bean
    後三種只適用於WebApplicationContext環境











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章