第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在應(yīng)用程序上下文初始化事件中添加鉤子?

如何在應(yīng)用程序上下文初始化事件中添加鉤子?

RISEBY 2019-11-28 13:07:07
對(duì)于常規(guī)的Servlet,我想您可以聲明一個(gè)上下文偵聽(tīng)器,但是對(duì)于Spring MVC,Spring可以使此過(guò)程變得更容易嗎?此外,如果定義了上下文偵聽(tīng)器,然后需要訪問(wèn)在servlet.xml或中定義的bean,我applicationContext.xml將如何訪問(wèn)它們?
查看完整描述

3 回答

?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

從Spring 4.2開(kāi)始,您可以使用@EventListener(文檔)


@Component

class MyClassWithEventListeners {


    @EventListener({ContextRefreshedEvent.class})

    void contextRefreshedEvent() {

        System.out.println("a context refreshed event happened");

    }

}


查看完整回答
反對(duì) 回復(fù) 2019-11-28
?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

創(chuàng)建您的注釋


  @Retention(RetentionPolicy.RUNTIME)

    public @interface AfterSpringLoadComplete {

    }

建立課程


    public class PostProxyInvokerContextListener implements ApplicationListener<ContextRefreshedEvent> {


    @Autowired

    ConfigurableListableBeanFactory factory;


    @Override

    public void onApplicationEvent(ContextRefreshedEvent event) {

        ApplicationContext context = event.getApplicationContext();

        String[] names = context.getBeanDefinitionNames();

        for (String name : names) {

            try {

                BeanDefinition definition = factory.getBeanDefinition(name);

                String originalClassName = definition.getBeanClassName();

                Class<?> originalClass = Class.forName(originalClassName);

                Method[] methods = originalClass.getMethods();

                for (Method method : methods) {

                    if (method.isAnnotationPresent(AfterSpringLoadComplete.class)){

                        Object bean = context.getBean(name);

                        Method currentMethod = bean.getClass().getMethod(method.getName(), method.getParameterTypes());

                        currentMethod.invoke(bean);

                    }

                }

            } catch (Exception ignored) {

            }

        }

    }

}

通過(guò)@Component注釋或在xml中注冊(cè)此類(lèi)


<bean class="ua.adeptius.PostProxyInvokerContextListener"/>

并在環(huán)境初始化后要在任何要使用的方法上使用注解,例如:


   @AfterSpringLoadComplete

    public void init() {}


查看完整回答
反對(duì) 回復(fù) 2019-11-28
  • 3 回答
  • 0 關(guān)注
  • 575 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)