Spring的題目

Spring的基本應用

1、Spring框架的優點如下:

1、 請簡述Spring框架的優點。
(1)非侵入式設計:Spring是一種非侵入式(non-invasive)框架,它可以使應用程序代碼對框架的依賴最小化。
(2)方便解耦、簡化開發:Spring就是一個大工廠,可以將所有對象的創建和依賴關係的維護工作都交給Spring容器管理,大大的降低了組件之間的耦合性。
(3)支持AOP:Spring提供了對AOP的支持,它允許將一些通用任務,如安全、事務、日誌等進行集中式處理,從而提高了程序的複用性。
(4)支持聲明式事務處理:只需要通過配置就可以完成對事務的管理,而無需手動編程。
(5)方便程序的測試:Spring提供了對Junit4的支持,可以通過註解方便的測試Spring程序。
(6)方便集成各種優秀框架:Spring不排斥各種優秀的開源框架,其內部提供了對各種優秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。
(7)降低了Java EE API的使用難度:Spring對Java EE開發中非常難用的一些API(如:JDBC、JavaMail等),都提供了封裝,使這些API應用難度大大降低。。

2、 請簡述什麼是Spring的IoC和DI。

2、IoC的全稱是Inversion of Control,中文名稱爲控制反轉。控制反轉就是指在使用Spring框架之後,對象的實例不再由調用者來創建,而是由Spring容器來創建,Spring容器會負責控制程序之間的關係,而不是由調用者的程序代碼直接控制。這樣,控制權由應用代碼轉移到了Spring容器,控制權發生了反轉。
DI的全稱是Dependency Injection,中文稱之爲依賴注入。它與控制反轉(IoC)的含義相同,只不過這兩個稱呼是從兩個角度描述的同一個概念。從Spring容器的角度來看,Spring容器負責將被依賴對象賦值給調用者的成員變量,這相當於爲調用者注入了它依賴的實例,這就是Spring的依賴注入。

Spring中的bean

1、請簡述Bean的生命週期。

1、Bean的生命週期的整個執行過程描述如下。
(1)根據配置情況調用Bean構造方法或工廠方法實例化Bean。
(2)利用依賴注入來完成Bean中所有屬性值的配置注入。
(3)如果Bean實現了BeanNameAware接口,則Spring調用Bean的setBeanName()方法傳入當前Bean的id值。
(4)如果Bean實現了BeanFactoryAware接口,則Spring調用setBeanFactory()方法傳入當前工廠實例的引用。
(5)如果Bean實現了ApplicationContextAware接口,則Spring調用setApplicationContext()方法傳入當前ApplicationContext實例的引用。
(6)如果BeanPostProcessor和Bean關聯,則Spring將調用該接口的預初始化方法postProcessBeforeInitialzation()對Bean進行加工操作,這個非常重要,Spring的AOP就是用它實現的。
(7)如果Bean實現了InitializingBean接口,則Spring將調用afterPropertiesSet()方法。
(8)如果在配置文件中通過init-method屬性指定了初始化方法,則調用該初始化方法。
(9)如果有BeanPsostProcessor和Bean關聯,則Spring將調用該接口的初始化方法postProcessAfterInitialization()。此時,Bean已經可以被應用系統使用了。
(10)如果在 中指定了該Bean的作用範圍爲 scope=“singleton”,則將該Bean 放入Spring IoC的緩存池中,將觸發Spring對該Bean的生命週期管理;如果在中指定了該Bean的作用範圍爲scope=“prototype”,則將該Bean交給調用者,調用者管理該Bean的生命週期,Spring不再管理該Bean。
(11)如果Bean實現了DisposableBean接口,則Spring會調用destory()方法將Spring中的Bean銷燬;如果在配置文件中通過destory-method屬性指定了Bean的銷燬方法,則Spring將調用該方法進行銷燬。

2、請簡述Bean的幾種裝配方式的基本用法

Bean中主要包含三種裝配方式,分別爲基於XML的裝配,基於Annotation的裝配和自動裝配,這三種裝配方式的用法如下:
(1)基於XML的裝配:Spring提供了2種基於XML的裝配方式:設值注入(Setter Injection)和構造注入(Constructor Injection)。設置注入中的Bean類必須提供一個默認的無參構造方法,同時必須爲需要注入的屬性提供對應的setter方法。使用設值注入時,在Spring配置文件中,需要使用元素的子元素來爲每個屬性注入值。使用構造注入時,在配置文件裏,需要使用元素的子元素來定義構造方法的參數,可以使用其value屬性(或子元素)來設置該參數的值。
(2)基於Annotation的裝配:使用基於Annotation的裝配時,首先需要使用@Repository、@Service與@Constroller分別對實現類進行標註,然後用@Autowired或@Resource註解對注入的Bean的屬性進行標註,最後在Spring的配置文件中,通過<context:annotation-config />來開啓註解處理器,或使用<context:component-scan base-package=“Bean所在的包路徑”/>的配置方式即可實現Annotation的裝配。
(3)自動裝配:在元素中使用autowire屬性,並將其屬性值設置爲byName或者byType即可實現自動裝配。

Spring AOP

1、請列舉你所知道的AOP專業術語並解釋。

AOP的專業術語包括Aspect、Joinpoint、Pointcut、Advice、Target Object、Proxy和Weaving,對於這些專業術語的解釋,具體如下:
(1)Aspect(切面):在實際應用中,切面通常是指封裝的用於橫向插入系統功能(如事務、日誌等)的類,如圖3-1中的Aspect。該類要被Spring容器識別爲切面,需要在配置文件中通過元素指定。
(2)Joinpoint(連接點):在程序執行過程中的某個階段點,它實際上是對象的一個操作,例如方法的調用或異常的拋出。在Spring AOP中,連接點就是指方法的調用。
(3)Pointcut(切入點):是指切面與程序流程的交叉點,即那些需要處理的連接點,如圖3-2所示。通常在程序中,切入點指的是類或者方法名,如某個通知要應用到所有以add開頭的方法中,那麼所有滿足這一規則的方法都是切入點。
(4)Advice(通知/增強處理):AOP框架在特定的切入點執行的增強處理,即在定義好的切入點處所要執行的程序代碼。可以將其理解爲切面類中的方法,它是切面的具體實現。
(5)Target Object(目標對象):是指所有被通知的對象,也被稱爲被增強對象。如果AOP框架採用的是動態的AOP實現,那麼該對象就是一個被代理對象。
(6)Proxy(代理):將通知應用到目標對象之後,被動態創建的對象。
(7)Weaving(織入):將切面代碼插入到目標對象上,從而生成代理對象的過程。

2、請列舉你所知道的Spring的通知類型並解釋。

Spring中的通知按照在目標類方法的連接點位置,可以分爲以下5種類型:
(1)org.aopalliance.intercept.MethodInterceptor(環繞通知)
在目標方法執行前後實施增強,可以應用於日誌、事務管理等功能。
(2)org.springframework.aop.MethodBeforeAdvice(前置通知)
在目標方法執行前實施增強,可以應用於權限管理等功能。
(3)org.springframework.aop.AfterReturningAdvice(後置通知)
在目標方法執行後實施增強,可以應用於關閉流、上傳文件、刪除臨時文件等功能。
(4)org.springframework.aop.ThrowsAdvice(異常通知)
在方法拋出異常後實施增強,可以應用於處理異常記錄日誌等功能。
(5)org.springframework.aop.IntroductionInterceptor(引介通知)
在目標類中添加一些新的方法和屬性,可以應用於修改老版本程序(增強類)

Spring的數據庫開發

1、請簡述Spring JDBC是如何進行配置的。

在Spring的配置文件中配置JDBC時,需要定義了三個Bean,分別是dataSource、jdbcTemplate和需要注入類的Bean。在定義jdbcTemplate時,需要將dataSource注入到jdbcTemplate中,而其他需要使用jdbcTemplate的Bean,也需要將jdbcTemplate注入到該Bean中,這樣配置完成後,Spring JDBC就可以使用了。

2、請簡述Spring JdbcTemplate類中幾個常用方法的作用。

在JdbcTemplate類中,提供了大量的更新和查詢數據庫的方法,我們就是使用的這些方法來操作數據庫的,其常用的方法包括execute()、update()和query()。其中execute()方法能夠完成執行SQL語句的功能,update()方法可以完成插入、更新和刪除數據的操作,query()方法可以用來處理各種對數據庫表的查詢操作。

Spring的事務管理

1、請簡述Spring中事務管理的兩種方式。

Spring中的事務管理分爲兩種方式:一種是傳統的編程式事務管理,另一種是聲明式事務管理。其中,編程式事務管理是通過編寫代碼實現的事務管理,包括定義事務的開始、正常執行後的事務提交和異常時的事務回滾。聲明式事務管理是通過AOP技術實現的事務管理,其主要思想是將事務管理作爲一個“切面”代碼單獨編寫,然後通過AOP技術將事務管理的“切面”代碼植入到業務目標類中。
聲明式事務管理最大的優點在於開發者無需通過編程的方式來管理事務,只需在配置文件中進行相關的事務規則聲明,就可以將事務規則應用到業務邏輯中。這使得開發人員可以更加專注於核心業務邏輯代碼的編寫,在一定程度上減少了工作量,提高了開發效率。

2、請簡述如何使用Annotation方式進行聲明式事務管理。

、Spring的聲明式事務管理通過Annotation(註解)方式來實現時,開發者只需做兩件事情:
1)在Spring容器中註冊事務註解驅動,其代碼如下:

<tx:annotation-driven transaction-manager="transactionManager"/>

2)在需要使用事務的Spring Bean類或者Bean類的方法上添加註解@Transactional。如果將註解添加在Bean類上,則表示事務的設置對整個Bean類的所有方法都起作用;如果將註解添加在Bean類中的某個方法上,則表示事務的設置只對該方法有效。

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