黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

面試題首頁 > Spring面試題

Spring設計模式面試題

001Spring中單例模式體現(xiàn)?

單例模式應該是大家印象最深的一種設計模式了。在Spring中最明顯的使用場景是在配置文件中配置注冊bean對象的時候設置scope的值為singleton 。

<bean class="com.bjpowernode.pojo.User" id="user" scope="singleton">
    <property name="name" value="張三"></property>
</bean>

002Spring中原型模式體現(xiàn)?

原型模式也叫克隆模式,Spring中該模式使用的很明顯,和單例一樣在bean標簽中設置scope的屬性prototype即表示該bean以克隆的方式生成

<bean class="com.bjpowernode.pojo.User" id="user" scope="prototype">
    <property name="name" value="張三"></property>
</bean>

003Spring中模板模式體現(xiàn)?

模板模式的核心是父類定義好流程,然后將流程中需要子類實現(xiàn)的方法就抽象話留給子類實現(xiàn),Spring中的JdbcTemplate就是這樣的實現(xiàn)。我們知道jdbc的步驟是固定
1)加載驅動,
2)獲取連接通道,
3)構建sql語句.
4)執(zhí)行sql語句,
5)關閉資源
在這些步驟中第3步和第4步是不確定的,所以就留給客戶實現(xiàn),而我們實際使用JdbcTemplate的時候也確實是只需要構建SQL就可以了.這就是典型的模板模式。我們以query方法為例來看下JdbcTemplate中的代碼.

004Spring中觀察者模式體現(xiàn)?

觀察者模式定義的是對象間的一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。使用比較場景是在監(jiān)聽器中而spring中Observer模式常用的地方也是listener的實現(xiàn)。如ApplicationListener.

005Spring中工廠模式體現(xiàn)?

簡單工廠模式:就是通過工廠根據(jù)傳遞進來的參數(shù)決定產(chǎn)生哪個對象。Spring中我們通過getBean方法獲取對象的時候根據(jù)id或者name獲取就是簡單工廠模式了。

<context:annotation-config/>
<bean class="com.bjpowernode.pojo.User" id="user"  >
  <property name="name" value="張三"></property>
</bean>

工廠方法模式:在Spring中我們一般是將Bean的實例化直接交給容器去管理的,實現(xiàn)了使用和創(chuàng)建的分離,這時容器直接管理對象,還有種情況是,bean的創(chuàng)建過程我們交給一個工廠去實現(xiàn),而Spring容器管理這個工廠。這個就是我們講的工廠模式,在Spring中有兩種實現(xiàn)一種是靜態(tài)工廠方法模式,一種是動態(tài)工廠方法模式。以靜態(tài)工廠來演示

/**
* User 工廠類
*
*/
public class UserFactory {
    
    /**
    * 必須是static方法
    * @return
    */
    public static UserBean getInstance(){
        return new UserBean();
    }
}

006Spring中適配器模式體現(xiàn)?

將一個類的接口轉換成客戶希望的另外一個接口。使得原本由于接口不兼容而不能一起工作的那些類可以在一起工作。這就是適配器模式。在Spring中在AOP實現(xiàn)中的Advice和interceptor之間的轉換就是通過適配器模式實現(xiàn)的。

class MethodBeforeAdviceAdapter implements AdvisorAdapter, Serializable {
    
    @Override
    public boolean supportsAdvice(Advice advice) {
        return (advice instanceof MethodBeforeAdvice);
    }
    
    @Override
    public MethodInterceptor getInterceptor(Advisor advisor) {
        MethodBeforeAdvice advice = (MethodBeforeAdvice) advisor.getAdvice();
        // 通知類型匹配對應的攔截器
        return new MethodBeforeAdviceInterceptor(advice);
    }
}

007Spring中裝飾者模式體現(xiàn)?

裝飾者模式:裝飾者模式又稱為包裝模式(Wrapper),作用是用來動態(tài)的為一個對象增加新的功能。裝飾模式是一種用于代替繼承的技術,無須通過繼承增加子類就能擴展對象的新功能。使用對象的關聯(lián)關系代替繼承關系,更加靈活,同時避免類型體系的快速膨脹。
spring中用到的包裝器模式在類名上有兩種表現(xiàn):一種是類名中含有Wrapper,另一種是類名中含有Decorator。基本上都是動態(tài)地給一個對象添加一些額外的職責。
具體的使用在Spring session框架中的SessionRepositoryRequestWrapper使用包裝模式對原生的request的功能進行增強,可以將session中的數(shù)據(jù)和分布式數(shù)據(jù)庫進行同步,這樣即使當前tomcat崩潰,session中的數(shù)據(jù)也不會丟失。

<dependency>
	<groupId>org.springframework.session</groupId>
	<artifactId>spring-session</artifactId>
	<version>1.3.1.RELEASE</version>
</dependency>

008Spring中其它設計模式體現(xiàn)?

代理模式:Spring的AOP功能用到了JDK的動態(tài)代理和CGLIB字節(jié)碼生成技術
策略模式:例如Resource的實現(xiàn)類,針對不同的資源文件,實現(xiàn)了不同方式的資源獲取策略。
責任鏈模式:AOP中的攔截器鏈
委托者模式:DelegatingFilterProxy,整合Shiro,SpringSecurity的時候都有用到。
橋接模式:可以根據(jù)客戶的需求能夠動態(tài)切換不同的數(shù)據(jù)源。比如我們的項目需要連接多個數(shù)據(jù)庫,客戶在每次訪問中根據(jù)需要會去訪問不同的數(shù)據(jù)庫。

目錄

返回頂部
主站蜘蛛池模板: 亚洲综合精品一区二区三区中文 | 最近2019视频免费观看8 | 狠狠色婷婷丁香六月 | 波多野结衣视频在线播放 | 国产免费播放一区二区三区 | 欧美中文在线视频 | 最新国产三级在线观看不卡 | 免费综合网 | 精品欧美日韩一区二区三区 | a级精品九九九大片免费看 a级精品国产片在线观看 | 天天色天天色 | 免费人成激情视频在线观看冫 | 九九精品视频在线播放8 | 久久人人爽人人爽人人片va | 国产精品成人h视频 | 深夜免费网站 | 在线观看国产精品入口 | 国产精品h片在线播放 | 国产网址在线观看 | 欧美激情在线播放一区二区三区 | free日韩性公交车上xxhd | 日韩欧美一区黑人vs日本人 | 国产一级片网站 | 日韩欧美亚洲每日更新网 | 狠狠操狠狠色 | 国产农村三片免费网站 | 在线成人播放毛片 | 黄色国产在线观看 | 99久久伊人 | 国产呦萝资源网站 | 香蕉视频污污在线观看 | 欧美成人精品久久精品 | 欧美性v视频播放 | 日本道综合一本久久久88 | 涩涩漫画免费入口 | 激情久久久久久久久久久 | 午夜手机视频 | 欧美日视频 | 一级毛片免费全部播放 | 天天爽夜夜爽免费看 | 曰皮全部过程视频免费高清 |