1.Spring 提供了對IOC 良好支持,IOC 是一種編程思想,是一種架構藝術,利用這種思想可以很好地實作模塊之間的解耦,IOC 也稱為DI(Depency Injection),什么叫依賴注入呢?
答:有如下代碼,在Spring如何完成依賴注入功能:
Class Programmer
{
Computer computer = null;
public void code()
{
//Computer computer = new IBMComputer();
//Computer computer = beanfacotry.getComputer();
computer.write();
}
public void setComputer(Computer computer)
{
this.computer = computer;
}
第一個直接依賴于目標類,第二個把依賴轉移到工廠上,第三個徹底與目標和工廠解耦了,
在spring 的組態檔中配置片段如下:
<bean id=”computer” class=”cn.itcast.interview.Computer”>
</bean>
<bean id=”programmer” class=”cn.itcast.interview.Programmer”>
<property name=”computer” ref=”computer”></property>
</bean>
2.談談您對于Spring的Aop的理解?
答:Spring 提供了對AOP 技術的良好封裝, AOP 稱為面向切面編程,就是系統中有很多各不相干的類的方法,在這些眾多方法中要加入某種系統功能的代碼,例如,加入日志,加入權限判斷,加入例外處理,這種應用稱為AOP,實作AOP 功能采用的是代理技術,客戶端程式不再呼叫目標,而呼叫代理類,代理類與目標類對外具有相同的方法宣告,有兩種方式可以實作相同的方法宣告,一是實作相同的介面,二是作為目標的子類在,JDK 中采用Proxy 類產生動態代理的方式為某個介面生成實作類,如果要為某個類生成子類,則可以用CGLI B,在生成的代理類的方法中加入系統功能和呼叫目標類的相應方法,系統功能的代理以Advice 物件進行提供,顯然要創建出代理物件,至少需要目標類和Advice 類,
spring 提供了這種支持,只需要在spring組態檔中配置這兩個元素即可實作代理和aop 功能,例如:
<bean id=”proxy” type=”org.spring.framework.aop.ProxyBeanFactory”>
<property name=”target” ref=””></property>
<property name=”advisor” ref=””></property>
</bean>
3.Spring中BeanFactory與AplicationContext有什么區別?
- BeanFactory負責讀取bean配置檔案,管理bean的加載,實體化,維護bean之間的依賴關系,負責bean的宣告周期,
- ApplicationContext除了提供上述BeanFactory所能提供的功能之外,還提供了更完整的框架功能:a.國際化b.資源訪問c.事件傳遞,
4.Spring的注入方式?
答:Spring依賴注入的型別主要為:setter注入和構造器注入
public class MyBean
{
String name;
public void setName(String name){
this.name = name
}
創建bean的實體然后設定屬性的值,Spring的組態檔如下:
<bean id="bean1">
<property name="name" value="mahaha" />
</bean>
構造器注入:構造器注入中,需要提供對應的構造方法:
public class MyBean{
private name;
public MyBean(String name){
this.name = name;}
在Spring的組態檔如下:
<bean id="mybean">
<constructor-arg>
<value>MyBean Value</value>
</constructor-arg>
</bean>
}
5.請簡述在Spring框架中幾種事務處理方式的優缺點?
答:在Spring框架中事務處理有三種方式:
- 用原始的transactionfactorybean的,代理dao事務處理,這種方式在Spring2.0之前的版本中使用,完全使用Spring Aop的API實作,理解起來比較容易,但使用起來比較麻煩,
- 用aop:config宣告要進行事務增強的切面,用tx:advice宣告具體方法的事務屬性,及應用到的事務管理器,此方法的優勢比較明顯,使用比較方便,但是缺點是不容易理解,配置容易失誤,其參考代碼如下:
<tx:advice id="txadvice" transaction-manager="txmanager">
<tx:attributes>
<tx:method name="add*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!--用aop:config宣告要進行事務增強的切面-->
<aop:config>
<aop:pointcut id="servicemethod"
expression="execution(* com.service..add*(..))"/>
<aop:advisor pointcut-ref="servicemethod" advice-ref="txadvice"/>
</aop:config>
- 使用@transactional注解配置宣告事務,配置比較方便,程式員只要在service層代碼設定即可實作,缺點就是后期調整很煩,當然此方式在注解比較流行的今天也被很多團隊使用,
其代碼示例如下:
<!--注解式事務配置驅動-->
<tx:annotation-driven transaction-manager="txmanager" proxy-target-class="true"/>
<!--業務類bean的實作類標注了@transactional注解,所以會被
tx:annotation-driven注解驅動自動織入事務增強-->
<bean id="userservice" class="com.service.impl.userserviceimpl">
<property name="userdao" ref="userjdbcdao"/>
</bean>
6.SSH 三大框架 各個原理,相互之間怎樣的關系?
-
Struts框架主要處理用戶請求和回應處理后的結果,如:提供處理用戶提交的資料和資料型別轉換以及在前臺顯示用戶資料;
-
Spring框架主要提供依賴注入,是的各層的物件之間關聯關系解耦,并且在Spring框架提供更大的事務支持,
-
Hibernate框架提供物件的持久化操作,就是面向物件的方式往資料庫里面進行增刪改查,在Spring框架中提供對Hibernate框架的支持,如HibernateTemplate,是的在使用Hibernate更加方便,
ssh框架關系如圖:

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/232069.html
標籤:其他
