2019-04-25_Spring單例學(xué)習(xí)

Spring單例學(xué)習(xí)
1.概述
2.練習(xí)
2.1.接口定義
package com.tech.ability.springstudy.service;

/**

  • Created by kikop on 2019/2/25.
    */
    public interface IHelloWorldService {

    public void sayHello();

}
2.2.接口實(shí)現(xiàn)
package com.tech.ability.springstudy.service.impl;

import com.tech.ability.springstudy.service.IHelloWorldService;

/**

  • Created by kikop on 2019/2/25.
    */
    public class SpringHelloWorldImpl implements IHelloWorldService {

    @Override
    public void sayHello() {
    System.out.println("SpringHelloWorldImpl");
    }
    }

2.3.后臺屬性注入
package com.tech.ability.springstudy;

import com.tech.ability.springstudy.service.IHelloWorldService;

/**

  • Created by kikop on 2019/2/25.
    */
    public class HelloWorldServiceInject {
//單例測試
public int globalVal = 0;

public int getGlobalVal() {
    return globalVal;
}

public void setGlobalVal(int globalVal) {
    this.globalVal = globalVal;
}


//屬性注入
private IHelloWorldService iHelloWorldService;

public IHelloWorldService getiHelloWorldService() {
    return iHelloWorldService;
}

public void setiHelloWorldService(IHelloWorldService iHelloWorldService) {
    this.iHelloWorldService = iHelloWorldService;
}

public HelloWorldServiceInject() {
}

}

2.4.Xml配置
<?xml version='1.0' encoding='UTF-8'?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

<!--這里定義Spring配置文件沦偎,并聲明所有可用的bean-->

<!--1.定義實(shí)現(xiàn) iHelloWorldService接口的bean對象-->
<bean id="springHelloWorldImplSingleTon" class="com.tech.ability.springstudy.service.impl.SpringHelloWorldImpl"></bean>

<bean id="structHelloWorldImpl" class="com.tech.ability.springstudy.service.impl.StructHelloWorldImpl"></bean>

<!--2.引用實(shí)現(xiàn) iHelloWorldService接口的bean對象,默認(rèn)單例Singleton-->
<bean id="helloWorldServiceInjectSingleTon" class="com.tech.ability.springstudy.HelloWorldServiceInject"
      scope="singleton">
    <property name="iHelloWorldService" ref="springHelloWorldImplSingleTon"></property>
</bean>

<bean id="helloWorldServiceInjectNew" class="com.tech.ability.springstudy.HelloWorldServiceInject"
      scope="prototype">
    <property name="iHelloWorldService" ref="springHelloWorldImplSingleTon"></property>
</bean>

</beans>
2.5.測試
package com.tech.ability.springstudy;

import com.tech.ability.mycommonutils.DateUtil;
import com.tech.ability.springstudy.service.IHelloWorldService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**

  • Created by kikop on 2019/2/25.
    */
    public class MySpringTest {

    /**

    • spring屬性注入測試
      */
      public static void ioctest() {

      //1.引用xml文件,xml等文件放在resources里面,獨(dú)立于webapp下面的東西挣输。
      ApplicationContext context =
      new ClassPathXmlApplicationContext("myspring/spring.xml");

      //2.獲取指定服務(wù)
      HelloWorldServiceInject service =
      (HelloWorldServiceInject) context.getBean("helloWorldServiceInjectSingleTon");

      //2.獲取服務(wù)下注入的Bean(SpringHelloWorldImpl、StructHelloWorldImpl)
      IHelloWorldService hw = service.getiHelloWorldService();

      //3.測試
      hw.sayHello();

    }

public static void singletonTest() {

    //1.引用xml文件,xml等文件放在resources里面,獨(dú)立于webapp下面的東西帽驯。
    ApplicationContext context =
            new ClassPathXmlApplicationContext("myspring/spring.xml");

    //2.獲取指定服務(wù)
    HelloWorldServiceInject service =
            (HelloWorldServiceInject) context.getBean("helloWorldServiceInjectSingleTon");

    //2.1.測試
    service.setGlobalVal(100);
    System.out.println(DateUtil.getCurrentThreadInfo(String.valueOf(service.getGlobalVal())));

    //3.再次獲取指定服務(wù)
    HelloWorldServiceInject service2 =
            (HelloWorldServiceInject) context.getBean("helloWorldServiceInjectSingleTon");
    System.out.println(DateUtil.getCurrentThreadInfo(String.valueOf(service2.getGlobalVal())));
}

public static void prototypeTest() {
    //1.引用xml文件,xml等文件放在resources里面,獨(dú)立于webapp下面的東西悼瘾。
    ApplicationContext context =
            new ClassPathXmlApplicationContext("myspring/spring.xml");

    //2.獲取指定服務(wù)
    HelloWorldServiceInject service =
            (HelloWorldServiceInject) context.getBean("helloWorldServiceInjectNew");
    //2.1.測試
    service.setGlobalVal(100);
    System.out.println(DateUtil.getCurrentThreadInfo(String.valueOf(service.getGlobalVal())));


    //3.再次獲取指定服務(wù)
    HelloWorldServiceInject service2 =
            (HelloWorldServiceInject) context.getBean("helloWorldServiceInjectNew");
    System.out.println(DateUtil.getCurrentThreadInfo(String.valueOf(service2.getGlobalVal())));
}

public static void main(String[] args) {

    System.out.println("singletonTest");
    singletonTest();
    System.out.println("prototypeTest");
    prototypeTest();
}

}
2.6.結(jié)果查看

singletonTest
2019-04-25 07:40:53.092 INFO [main][AbstractApplicationContext.java:589] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@21a947fe: startup date [Thu Apr 25 07:40:53 CST 2019]; root of context hierarchy
2019-04-25 07:40:53.148 INFO [main][XmlBeanDefinitionReader.java:316] - Loading XML bean definitions from class path resource [myspring/spring.xml]
[2019-04-25 07:40:53] main:100
[2019-04-25 07:40:53] main:100
prototypeTest
2019-04-25 07:40:53.582 INFO [main][AbstractApplicationContext.java:589] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2e55dd0c: startup date [Thu Apr 25 07:40:53 CST 2019]; root of context hierarchy
2019-04-25 07:40:53.583 INFO [main][XmlBeanDefinitionReader.java:316] - Loading XML bean definitions from class path resource [myspring/spring.xml]
[2019-04-25 07:40:53] main:100
[2019-04-25 07:40:53] main:0

Process finished with exit code 0

參考
1.實(shí)戰(zhàn)Java高并發(fā)程序設(shè)計

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囊榜,一起剝皮案震驚了整個濱河市审胸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卸勺,老刑警劉巖砂沛,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異孔庭,居然都是意外死亡尺上,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門圆到,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怎抛,“玉大人,你說我怎么就攤上這事芽淡÷砭” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵挣菲,是天一觀的道長富稻。 經(jīng)常有香客問我,道長白胀,這世上最難降的妖魔是什么椭赋? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮或杠,結(jié)果婚禮上哪怔,老公的妹妹穿的比我還像新娘。我一直安慰自己向抢,他們只是感情好认境,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挟鸠,像睡著了一般叉信。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上艘希,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天硼身,我揣著相機(jī)與錄音,去河邊找鬼覆享。 笑死鸠姨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淹真。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼连茧,長吁一口氣:“原來是場噩夢啊……” “哼核蘸!你這毒婦竟也來了巍糯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤客扎,失蹤者是張志新(化名)和其女友劉穎祟峦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徙鱼,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宅楞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了袱吆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厌衙。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绞绒,靈堂內(nèi)的尸體忽然破棺而出婶希,到底是詐尸還是另有隱情,我是刑警寧澤蓬衡,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布喻杈,位于F島的核電站,受9級特大地震影響狰晚,放射性物質(zhì)發(fā)生泄漏筒饰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一壁晒、第九天 我趴在偏房一處隱蔽的房頂上張望瓷们。 院中可真熱鬧,春花似錦讨衣、人聲如沸换棚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽固蚤。三九已至,卻和暖如春歹茶,著一層夾襖步出監(jiān)牢的瞬間夕玩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工惊豺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留燎孟,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓尸昧,卻偏偏與公主長得像揩页,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烹俗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容