7.7.1:使用構造器建立Bean執行個體

大多數情況下,BeanFactory直接通過new關鍵字調用構造器來建立Bean執行個體,而class屬性指定了Bean執行個體的實作類別。但這並不是執行個體化Bean的唯一方法。建立Bean通常有如下三個方法:① 調用構造器建立Bean執行個體。② 調用靜態Factory 方法建立Bean。③ 調用執行個體Factory

MVC架構與Spring整合的思考

對於一個基於B/S架構的JavaEE應用而言,使用者請求總是向MVC架構的控制器請求,而當控制器攔截到使用者請求後,必須調用商務邏輯組件來處理使用者請求。此時有一個問題:控制器應該如何獲得商務邏輯組件?最容易想到的策略是,直接通過 new 關鍵字建立商務邏輯組件,然後調用商務邏輯組件的方法,根據商務邏輯方法的傳回值確定結果。在實際開發中,很少採用上面的策略,因為這是一種非常差的策略。原因有三:① 控制器直接建立商務邏輯組件,導致控制器和商務邏輯組件的耦合降低到代碼層次,不利於高層次解耦。②

7.8.6: 強制初始化Bean

Spring預設有個規則:總是先初始化主調Bean,然後再初始化依賴Bean。大多數情況下,Bean之間的依賴關係非常直接,Spring容器在返回Bean執行個體之前,完成Bean依賴關係的注入。假如Bean A依賴於Bean B,程式請求Bean A時,Spring容器會自動先初始化Bean B,再將Bean B注入Bean A,最後將具備完整依賴的Bean A返回給程式。在極端的情況下,Bean之間的依賴不夠直接。比如某個類的初始化塊中使用其他Bean,Spring總是先初始化主調Bean,

Spring支援的事務策略

JavaEE應用的傳統事務有兩種策略:全域事務和局部事務。全域事務由應用伺服器管理,需要底層伺服器的JTA支援。局部事務和底層所採用的持久化技術有關,當採用JDBC持久化技術時,需要使用Connection對象來操作事務;而採用Hibernate持久化技術時,需要使用Session對象來操作事務。當採用傳統的事務編程策略時,程式碼必然和具體的事務作業碼耦合,這樣造成的後果是:當應用需要在不同的事務策略之間切換時,開發人員必須手動修改程式碼。當使用Spring事務策略後,就可以改變這種狀況。Spr

基於Annotation的Spring AOP: @Around

@Around 增強處理是功能比較強大的增強處理,它近似等於Before 和

7.8.2: 使用子Bean

隨著應用程式規模的增大,Spring設定檔的增長速度更快。當應用中組件越來越多時,Spring設定檔裡的Bean配置也隨之大幅度增加,慢慢地就會出現一種現象:有一批Bean配置的大量配置資訊完全相同,只有少量配置不同。那麼我們是否有辦法來簡化這種配置呢?Spring提供了 Bean繼承

1. 二八定律

二八定律又名帕累托定律,也叫巴萊多、80/20定律、最省力的法則、不平衡原則等,是19世紀末20世紀初意大利經濟學家帕累托發明。他認為:在任何一組東西中,最重要的只佔其中一小部分,約20%,其餘80%的儘管是多數,卻是次要的,因此又稱二八法則,並被廣泛運用到生活和企業管理方面。理論來源1897年,意大利經濟學者帕累托偶然注意到19世紀英國人的財富和收益模式。在調查取樣中,發現大部份的財富流向了少數人手裡。同時,他還從早期的資料中發現,在其他的國家,都發現有這種微妙關係一再出現,而且在數學上呈現出

基於Annotation的Spring AOP: @Before

AspectJ 允許使用Annotation定義切面、切入點和增強處理,而 Spring架構則可識別並根據這些Annotation來產生AOP代理。Spring只是使用了和AspectJ一樣的註解,並沒有使用AspectJ的編譯器和織入器,底層依然使用的是 Spring

建立索引的兩種方式(重點)

① 自動建立索引:當建立 unique 和 pk 約束時,索引自動建立。② 手動建立索引:create index emp_ename_index on emp(ename);哪些列適合建索引:① 經常出現在where子句的列。② 經常用於表串連的列。③ 該列包含許多null值。④ 表很大,查詢的結果集卻很小。⑤ pk列和unique列。⑥ fk列。⑦ 經常需要排序和分組的列。索引的存在意義在於提高查詢效率。最後注意:索引不是萬能的。哪些列不適合建索引:① 表很小。②

Spring AOP中使用args運算式訪問目標方法的參數

如果只要訪問目標方法的參數,Spring還提供了一種更簡單的方法:我們可以在程式中使用args來繫結目標方法的參數。如果在一個args運算式中指定了一個或多個參數,則該切入點將只匹配具有對應形參的方法,且目標方法的參數值將被傳入增強處理方法。Person.java :public interface Person {public String sayHello(String name);public void eat(String food,Date time);}Chinese.java :@

7.8.4: 容器中的 工廠Bean

此處的工廠Bean,與前面介紹的執行個體Factory 方法建立Bean,或者靜態Factory 方法建立Bean的工廠有所區別:前面那些工廠是標準的原廠模式,Spring只是負責調用Factory 方法來建立Bean執行個體;此處的 工廠Bean 是Spring的一種特殊Bean,這種工廠Bean必須實現FactoryBean介面。FactoryBean介面是工廠Bean的標準介面,實現該介面的Bean通常只能作為工廠Bean使用,當我們將工廠Bean部署在容器中,並通過getBean(

primary key 約束

主鍵pk:unique+not null建立主鍵約束一共有3種方法:① 建立主鍵約束,由系統命名,建立在列級:--列級主鍵約束create table student(id number primary key,name varchar2(20),email char(40)register date default sysdate);② 建立主鍵約束,自己命名,建立在表級:--表級主鍵約束create table student(id number,name

定義切入點

我們在前面的文章中,在一個切面類中定義了4個增強處理,定義4個增強處理時分別指定了相同的切入點運算式,這種做法顯然不太符合軟體設計的原則:我們居然將那個切入點運算式重複了4次,如果有一天需要修改這個切入點運算式,那就要修改4個地方。如果重複了更多次呢?歲,我們就得修改更多次。為瞭解決這個問題,AspectJ和Spring都允許定義切入點。所謂 定義切入點,其實質就是為一個切入點運算式起一個名稱,從而允許在多個增強處理中重用該名稱。Spring AOP 只支援以Spring

7.8.5: 獲得Bean部署時的id

在之前的例子中,程式總是通過Bean id獲得Bean對象。但是在實際中,一個Bean與Bean之間的關係是通過依賴注入管理的,常常不會通過調用容器的getBean方法來擷取Bean執行個體。可能的情況是:應用中已經獲得了Bean執行個體的引用,但程式無法知道配置該Bean時指定的id屬性,而程式又需要配置該Bean時指定的id屬性。在某些極端情況下,程式開發Bean類時需要獲得在容器中部署該Bean時指定的id屬性,此時可藉助於Spring提供的 BeanNameAware

基於Annotation的Spring AOP: @AfterReturning

AfterReturning 增強處理將在目標方法正常完成後被織入。使用@AfterReturning可指定如下兩個屬性:① pointcut / value : 兩者都用於指定該切入點對應的切入運算式② returning : 指定一個傳回值形參名,增強處理定義的方法可通過該行參名來訪問目標方法的傳回值。Person.java :public interface Person {public String sayHello(String name);public void

Spring整合Struts2方式一:讓Spring容器管理控制器

web.xml :<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

基於Annotation的Spring AOP: @AfterThrowing

@AfterThrowing 主要用於處理常式中未處理的異常。使用@AfterThrowing 時可指定如下兩個屬性:① pointcut / value : 用於指定該切入點對應的切入運算式。② throwing : 指定一個傳回值形參名,增強處理定義的方法可通過該形參名來訪問目標方法中所拋出的異常對象。Person.java :public interface Person {public String sayHello(String name);public void divide();}

Spring整合Struts2方式二:使用自動裝配

承接上篇文章,將需要改動的地方列出來:struts.xml :<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"><struts>

基於Annotation的Spring AOP: @After

@After與@AfterReturning有點相似,但是也有區別:① AfterReturning 增強處理只在目標方法成功完成後才會被織入。② After 增強處理不管目標方法如何結束,包括成功完成和遇到異常終止兩種情況,它都會被織入。因為不論一個方法是如何結束的,After增強處理都會被織入,因此After增強處理必須準備處理正常返回和異常返回兩種情況,這種增強處理通常用於釋放資源。Person.java :public interface Person {public String

Spring提供的DAO支援

DAO模式

總頁數: 61357 1 .... 17632 17633 17634 17635 17636 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.