1. 程式人生 > >Spring註解方式和配置檔案方式的混用

Spring註解方式和配置檔案方式的混用

1.註解方式和配置檔案方式的混用:
    1.配置檔案方式 : 用於配置物件的建立 
        <beans>
            <!--開啟掃描-->
            <context:component-scan base-package="需要掃描註解的包名"></context:component-scan>
            <!--配置物件-->
            <bean id="物件在框架中的名稱" class="要被建立物件那個類的全類名"></bean>            
        </beans>
    2.註解方式 : 用於搭建物件之間的引用關係 @Resource(name="被引用物件的名字")
    
2.aop的實現方式動態代理:
    1.使用JDK動態代理,針對有介面的情況,
    2.使用cglib動態代理,針對沒有介面的情況;

3.代理工廠類做的事情:
    當你給動態代理工廠一個需要被代理的物件 target 時,動態代理工廠用Proxy的API給你動態建立一個代理物件proxy,並且會同時給
    這個代理物件綁定了一個invoke()方法(ps:這個invoke()方法是在一個 Invocation 類中定義的),這個invoke方法有何特
    點呢? 1.因為代理物件 proxy 是工廠給你的,這個invoke()方法也是工廠給你繫結的,所以,這個invoke()方法可以監聽到你在
    什麼時候,呼叫了這個代理 proxy 的哪個方法 method(),所以一旦你呼叫代理的某個方法,馬上就會被invoke()方法監聽到,它可以馬上
    獲得當前被呼叫的方法 method() 的物件 Method,以及呼叫方法的代理物件 proxy ,還有你呼叫方法時傳入的引數 Object[] params ;
    當然,此時你也可以獲得被代理的物件 target(實際操作中是讓代理工廠實現了Invocation介面,那麼invoke()方法也在代理類中,所以在創
    建代理類時通過構造傳參,將物件target傳過去),那麼此時此刻,你可以在invoke(),方法中直接 用你獲得的method物件,傳入被代理的物件
    target 和 引數 params,這樣就完成了通過代理物件 proxy 調方法,實現了 目標物件 target 的相應方法被呼叫,但是,但是,如果你一旦
    在invoke()方法中寫點兒其他東西,比如說:你在 Method 物件invoke之前或者之後 做了一些其他的操作,那麼這就意味著,此時此刻,你用
    代理呼叫方法,不僅意味著目標物件target的相應方法被呼叫,而且同時執行了其他操作,這個就是動態代理實現了功能的增強;
    
    
4.在spring框架中 , 屬性注入方式:
    1.在xml中配置:
        1.屬性注入<property name="" name=""(或者ref="")></property> ,需要bean類有setter,getter方法
            ps:可以用P名稱空間來替代,看起來更簡潔,但是相對不夠直觀,用得不多;
        2.構造方法注入 <constructor-arg index="0" value=""></constructor-arg>
                       <constructor-arg index="1" value=""></constructor-arg>, 需要有相應構造方法;
            ps:可以用C名稱空間來替代,看起來更簡潔,但是相對不夠直觀,用得不多;    
            
    2.註解方式配置(如果修飾屬性,可以不用提供setter ,getter方法)
        1.簡單屬性注入: @value(值)
        2.針對屬性是bean型別的注入:        
            

[email protected]() 預設是按型別匹配 ,可以和    @Qualifier(value="") 配合使用;在型別有多個匹配時,按名稱匹配
            [email protected](name="") 按名稱匹配;
        3.注意:@Value @Autowired它們可以修飾屬性,也可以修飾setter方法,如果寫在屬性上,就不需要提供setter方法。    

5.bean註冊到spring容器(工廠)管理中(註解方式):
    1.首先要開啟註解掃描: 我們在applicationContext.xml檔案中使用了一個標籤    <context:annotation-config />,
        它代表的是可以使用spring的註解,但是我們在類上新增的註解,spring不知道位置。要解決這個問題,
        我們可以使用<context:component-sacn base-package=””>

    [email protected]    
    3.在spring2.5後為@Component添加了三個衍生的註解
        @Repository 用於DAO層
        @Service 用於service層
        @Controller  用於表現層
        
        
6.Spring在web開發中的應用
    1.在web專案中要使用spring需要匯入一個jar包    
    2.在web.xml檔案中配置Listener
        這個ContextLoaderListener它實現了ServletContextListener
        在這個listener中,當伺服器啟動時,將ApplicationContext物件,其實是它的一個實現類
        WebApplicationContext,物件存入到了ServletContext中。
    3.我們還需要在web.xml檔案中配置applicationContext.xml檔案的位置
        預設情況下會在WEB-INF目錄 下查詢applicationContext.xml
        如果applicationContext.xml檔案不是在預設位置,我們可以在web.xml檔案中配置    

        Classpath:applicationContext.xml 它代表的是在當前工程的類路徑下(可以理解成是在src)下來查詢applicationContext.xml檔案。
        contextConfigLocation它是在listener中宣告的一個常量,描述的就是spring配置檔案的位置。
        
        
7. ssh三大框架整合之後的流程 (網上搜的)
 1. 伺服器啟動,啟動時載入web.xml,通過spring監聽器載入對應的spring配置,將配置(或配置)好的bean例項化,放入到spring容器之中。
 2. 在載入spring配置檔案時,會對應的載入spring配置檔案中的hibernate對映檔案,
 3. 瀏覽器端傳送請求,通過struts2的過濾器(cleanUpFilter..DispatcherFilter核心),找到對應的actionMapper,判斷請求是否為action請求
 4. 如果是action請求,便會在struts2-spring容器中查詢對應名字的action例項(如果不是action例項,便會直接呼叫jsp等其他資源作為響應)。
 5.action例項會呼叫Action類中對應的方法,該方法中會呼叫對應的service中的業務邏輯方法來響應,action會找到spring容器中對應的service例項,
    通過setter方法來注入到action中。
 6.同樣,service例項中需要的dao也會以同樣的方式注入到service中。之後完成對應的資料庫操作。
 當然在中間會呼叫struts2的攔截器,這個攔截器呼叫的時機沒有變化。
 可以根據自己的理解來敘述。

相關推薦

Spring註解方式配置檔案方式混用

1.註解方式和配置檔案方式的混用:     1.配置檔案方式 : 用於配置物件的建立          <beans>             <!--開啟掃描-->             <context:component-scan bas

Hibernate學習筆記(一)之——根據配置檔案自動建立表的兩種方式註解方式配置檔案方式

環境準備:jdk  eclipse   hibernate、mysql jar包 專案截圖: Student是根據配置檔案建立表,Teacher是根據註解建立表 Student.java package com.java1234.model; publi

Spring mvc通過xml配置檔案方式實現簡單HelloWorld

實現Spring MVC有兩種不同的方式:基於XML配置檔案和基於註解。 這裡,我們使用XML檔案的方式來實現。 首先,我們需要在Eclipse或者是MyEclipse中新建一個web專案,並將Spr

Jsp中標籤使用:tag 檔案方式 tld檔案方式

Tag檔案 Tag檔案和JSP檔案很類似,可以被JSP頁面動態載入呼叫,但是使用者不能通過該Tag檔案所在Web服務目錄直接訪問這個Tag檔案。 Tag檔案的兩點好處: (1)在設計Web應用時,可以通過編寫Tag檔案實現程式碼複用。 (2)可將JSP頁面中的關於資料處

Spring原始碼解析配置檔案載入

Spring類的繼承結構圖: Spring運用了大量的模板方法模式和策略模式,所以各位看原始碼的時候,務必留意,每一個繼承的層次都有不同的作用,然後將相同的地方抽取出來,依賴抽象將不同的處理按照不同的策略去處理。 步驟A. 讀取 Resource 檔案形成 Documen

註解@SpringBootConfiguration配置檔案application.properties

一、springBoot的專案一般都會有*Application的入口類,入口類中會有main方法,這是一個標準的Java應用程式的入口方法。 @SpringBootApplication註解是SpringBoot的核心註解,它其實是一個組合註解:

在ServletContextListener 的實現類中(使用Spring @Value 註解方式讀取配置檔案、或者注入Spring bean)

在ServletContextListener 的實現類中 使用Spring @Value 註解的方式讀取配置檔案 我想向ServletContextListener中通過Spring @value 的方法讀取 properties 配置檔案資訊,但是我開始的方法不行 public class MyLi

Spring通過@Value註解自動匯入配置檔案的幾種方式

場景假如有以下屬性檔案dev.properties, 需要注入下面的tagtag=123需要宣告的是:在使用@Value 註解 注入引數時,在當前類需要給該屬性提供Setter 方法!!1.通過PropertyPlaceholderConfigurer<bean cla

Spring註解注入bean配置檔案注入bean

註解的方式確實比手動寫xml檔案注入要方便快捷很多,省去了很多不必要的時間去寫xml檔案 按以往要注入bean的時候,需要去配置一個xml,當然也可以直接掃描包體,用xml注入bean有以下方法: 1 <?xml version="1.0" encoding="UTF-8"?> 2

idea環境下Spring Boot專案切換配置檔案的多種方式

1,第一種     在application.properties配置檔案裡新增一行配置。 #載入開發的配置檔案 spring.profiles.active=dev 開發配置檔案為application-dev.properties。 2,第二種 點選Edit

sprint-boot 整合mybatis+註解方式+配置檔案方式

註解方式  application.yml spring: datasource: # 資料來源基本配置 username: root password: root driver-class-name: com.mysql.jdbc.Dr

Spring框架的Bean管理的配置檔案方式

1. id屬性和name屬性的區別 * id -- Bean起個名字,在約束中採用ID的約束,唯一 * 取值要求:必須以字母開始,可以使用字母、數字、連字元、下劃線、句話、冒號 id:不能出現特殊字元 * name -- Bean起個名字,沒有采用I

Spring MVC】註解配置檔案的程式碼比較

當我們在類檔案裡寫了方法,怎麼被程式知道並呼叫呢?一般有兩種方法: 配置檔案 註解 下面小編就以親自敲的例子“SpringMVC_Test”為例來簡單說說。 配置檔案篇 在springmvc.xml中這樣寫: 在controller包下的類中這樣寫: 註

Spring入門學習(使用XML配置檔案方式配置AOP) 第十七節

Spring入門學習(使用XML配置檔案方式來配置AOP) xml配置檔案配置AOP xml配置檔案配置AOP 使用之前建立的類ArithmeticCalculator和ArithmeticCalculatorImpl 去掉Log

Spring筆記5-基於配置檔案方式配置AOP

<beans> <!--配置普通的bean--> <bean id="testAspectImpl" class="com.kcj.test.TestAs

spring註解配置檔案混合使用

spring提供了配置檔案去例項化bean,也提供了註解去宣告bean,那可不可以兩者一起使用呢?這個當然可以的 我們使用註解去宣告bean的時候使用到Context掃描器,現在我們要使用Cont

spring中通過配置檔案方式實現定時任務

Spring3.0以後自帶有定時任務的實現功能: 一、修改spring配置檔案的內容:在檔案頭新增名稱空間和描述 <?xmlversion="1.0"encoding="UTF-8"? > <beansxmlns="http://www.springf

Spring事務配置檔案方式

<!-- 配置事務屬性 --> <tx:advice id="txAdvice" transaction-manager="dataSourceTransactionManage

4.1 Spring beans的建立配置(XML方式)

準備 //--Classes.java package com.erick.d1.hello; public class Classes { private String name; private int number; p

Spring Boot 以流的方式讀取配置檔案

問題說明   在以往的專案中,我們有時會讀取資源目錄下的*.config檔案,有時會讀取絕對路徑,還挺好用,但是這種做法在Spring Boot專案中就不好使了。因為Spring Boot專案把