InitComponent的使用

Posted duanwandao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了InitComponent的使用相关的知识,希望对你有一定的参考价值。

网页中的数据,有些是不在网页上改变的,像一些个人信息,比如:头像,当前用户名,友情链接等等,每次请求该页面都要重新加载,这样很消耗服务器资源,会降低服务器的性能,这个时候我们可以把这些不变的信息,统一放到application中,当用户登录时候,就加载到application中,当重新加载使用该信息的页面时,只要在application中获取就可以。具体的做法如下:

 

新建一个 InitComponent实现类,实现ServletContextListener接口,也同时实现ApplicationContextAware这个接口(这个接口是spring提供的,可以获取applicationContext,)

实现ServletContextListener接口的两个方法:contextDestroyed:不需要操作。

contextInitialized:在初始化的动作:

通过它传进来的参数的getServletContext()方法获取到application

通过实现ApplicationContextAware接口的setApplicationContext方法获取到applicationContext,在通过applicationContext获取到指定的bean,就可以把指定的bean的值放到application中,前台只需从application中获取即可。

@Component
public class InitComponent implements ServletContextListener,ApplicationContextAware{
 
    private static ApplicationContext applicationContext;
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        ServletContext application = sce.getServletContext();
        applicationContext.getBean("指定的bean");
        application.setAttribute(把从bean获取的数据放入application中)
 
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext=applicationContext;
}

在web.xml中配置:监听器就行了。

<listener>
        <listener-class>InitComponent路径</listener-class>
</listener>

注意:在你定义的InitComponent 类,加注解:@Component才可以,spring才会把他当作bean加载。

 

转载出处 https://blog.csdn.net/qq_27163329/article/details/81906020

以上是关于InitComponent的使用的主要内容,如果未能解决你的问题,请参考以下文章

Ext.define() 中有关 initComponent() 的最佳实践

InitComponent的使用

修改 initComponent() 中的项目

在 initComponent 中声明时,事件侦听器未调用控制器方法

Extjs 4.1 - 如何在 initComponent 函数中创建项目

配置监听器使项目启动时创建消费者