<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 93,  comments - 2,  trackbacks - 0
    1、ApplicationContext
    Spring的核心,Context我們通常解釋為上下文環(huán)境。ApplicationContext則是應(yīng)用的容器。 Spring把Bean(object)放在容器中,需要用就通過get方法取出來。在ApplicationContext接口的眾多實(shí)現(xiàn)類中,有3個是我們經(jīng)常用到的(見表1-1),并且使用這3個實(shí)現(xiàn)類也基本能滿足我們Java EE應(yīng)用開發(fā)中的絕大部分需求。
    表1-1 ApplicationContext接口的常用實(shí)現(xiàn)類介紹
    ClassPathXmlApplicationContext
    從類路徑ClassPath中尋找指定的XML配置文件,找到并裝載完成ApplicationContext的實(shí)例化工作。例如: //裝載單個配置文件實(shí)例化ApplicationContext容器
    ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml");
    //裝載多個配置文件實(shí)例化ApplicationContext容器
    String[] configs = {"bean1.xml","bean2.xml","bean3.xml"};
    ApplicationContext cxt = new ClassPathXmlApplicationContext(configs);
    FileSystemXmlApplicationContext
    從指定的文件系統(tǒng)路徑中尋找指定的XML配置文件,找到并裝載完成ApplicationContext的實(shí)例化工作。例如://裝載單個配置文件實(shí)例化ApplicationContext容器
    ApplicationContext cxt = new FileSystemXMLApplicationContext("beans.xml");
    //裝載多個配置文件實(shí)例化ApplicationContext容器
    String[] configs = {"c:/beans1.xml","c:/beans2.xml"};
    ApplicationContext cxt = new FileSystemXmlApplicationContext(configs);
    XmlWebApplicationContext
    從Web應(yīng)用中尋找指定的XML配置文件,找到并裝載完成ApplicationContext的實(shí)例化工作。這是為Web工程量身定制的,使用WebApplicationContextUtils類的getRequiredWebApplicationContext方法可在JSP與Servlet中取得IoC容器的引用
    2、ApplicationEvent
    是個抽象類,里面只有一個構(gòu)造函數(shù)和一個長整型的timestamp。其源碼如下

    public abstract class ApplicationEvent extends EventObject {
     
        /** use serialVersionUID from Spring 1.2 for interoperability */
        private static final long serialVersionUID = 7099057708183571937L;
     
        /** System time when the event happened */
        private final long timestamp;
     
        /**
         * Create a new ApplicationEvent.
         * 
    @param source the object on which the event initially occurred (never {@code null})
         
    */
        public ApplicationEvent(Object source) {
            super(source);
            this.timestamp = System.currentTimeMillis();
        }
     
        /**
         * Return the system time in milliseconds when the event happened.
         
    */
        public final long getTimestamp() {
            return this.timestamp;
        }
    }

    3、ApplicationListener

    是一個接口,里面只有一個onApplicationEvent方法。如果在上下文中部署一個實(shí)現(xiàn)了ApplicationListener接口的bean,那么每當(dāng)在一個ApplicationEvent發(fā)布到 ApplicationContext時,調(diào)用ApplicationContext.publishEvent()方法,這個bean得到通知。類似于Oberver設(shè)計(jì)模式。
    其源碼如下:

    public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {
        /**
         * Handle an application event.
         * 
    @param event the event to respond to
         
    */
        void onApplicationEvent(E event);
     
    }
    下面舉個例子
    自定義事件NotifyEvent:
    import org.springframework.context.ApplicationEvent;

    public class NotifyEvent  extends ApplicationEvent  {
        private String email;
        private String content;
        public NotifyEvent(Object source){
            super(source);
        }

        public NotifyEvent(Object source,String email,String content){
            super(source);
            this.email = email;
            this.content = content;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String getContent() {
            return content;
        }

        public void setContent(String content) {
            this.content = content;
        }
    }

    定義監(jiān)聽器NotifyListener:
    import org.springframework.context.ApplicationListener;
    import org.springframework.context.annotation.Configuration;

    @Configuration
    public class NotifyListener implements ApplicationListener<NotifyEvent>{
        @Override
        public void onApplicationEvent(NotifyEvent event) {
            System.out.println("郵件地址:" + event.getEmail());
            System.out.println("郵件內(nèi)容:" + event.getContent());
        }
    }

    單元測試類ListenerTest:
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.web.context.WebApplicationContext;

    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = ServerLauncher.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class ListenerTest {
        @Autowired
        private WebApplicationContext webApplicationContext;

        @Test
        public void testListener(){
            NotifyEvent event = new NotifyEvent("object","abc@qq.com","This is the content");
            webApplicationContext.publishEvent(event);
        }
    }
    posted on 2020-04-09 14:47 Terry Zou 閱讀(1281) 評論(0)  編輯  收藏 所屬分類: spring

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2020年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    Java

    搜索

    •  

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 无码av免费一区二区三区| 性做久久久久久久免费看| 亚洲午夜电影一区二区三区| 九九九精品成人免费视频| 国产精品99爱免费视频| 亚洲精品国产成人中文| 国产乱弄免费视频| 国产精品免费观看调教网| 亚洲午夜在线播放| 亚洲精品夜夜夜妓女网| 日韩欧美一区二区三区免费观看 | 一进一出60分钟免费视频| 91精品国产亚洲爽啪在线观看| 韩国日本好看电影免费看| 成av免费大片黄在线观看| 中文日韩亚洲欧美制服| 日本亚洲成高清一区二区三区| 成人在线免费观看| 女人体1963午夜免费视频| 在线播放亚洲精品| 亚洲国色天香视频| 国产亚洲综合成人91精品| 免费大香伊蕉在人线国产| 67194成手机免费观看| yellow视频免费看| 亚洲AV日韩AV无码污污网站| 久久久久亚洲Av无码专| 国产综合亚洲专区在线| 啊v在线免费观看| 成人免费无码大片A毛片抽搐| a成人毛片免费观看| 黄页网址大全免费观看12网站| 亚洲国产日韩在线| 亚洲va久久久噜噜噜久久狠狠 | 亚洲精品99久久久久中文字幕| 又粗又大又黑又长的免费视频| 国产一级一毛免费黄片| 国产亚洲欧美在线观看| 在线精品亚洲一区二区| 18亚洲男同志videos网站| 久久国产精品亚洲综合|