• springboot + ApplicationListener



    ApplicationListener自定义侦听器类
    
    
    @Component
    public class InstantiationTracingBeanPostProcessor implements
            ApplicationListener<ContextRefreshedEvent> {
        private static final Logger LOG = Logger.getLogger(InstantiationTracingBeanPostProcessor.class);
        private static boolean initialized;
        
        @Autowired
        private ManageResolver manageResolver;
    
        @Override
        public void onApplicationEvent(ContextRefreshedEvent event) {
            try {
                //只在初始化“根上下文”的时候执行
                final ApplicationContext app = event.getApplicationContext();
                if (null == app.getParent()
                        && ("Root WebApplicationContext".equals(app.getDisplayName())
                                || app.getDisplayName().contains("AnnotationConfigEmbeddedWebApplicationContext"))
                        && "/xweb".equals(app.getApplicationName())
                        ) { // 当存在父子容器时,此判断很有用
                    LOG.info("*************:" + event.getSource());
                    LOG.info("*************:" + app.getDisplayName());
                    LOG.info("*************:" + app.getApplicationName());
                    LOG.info("*************:" + app.getBeanDefinitionCount());
                    LOG.info("*************:" + app.getEnvironment());
                    LOG.info("*************:" + app.getParent());
                    LOG.info("*************:" + app.getParentBeanFactory());
                    LOG.info("*************:" + app.getId());
                    LOG.info("*************:" + app.toString());
                    LOG.info("*************:" + app);
                    if(!initialized && !manageResolver.IsInitialCompleted()) {
                        manageResolver.initLater();
                        initialized = true;
                    }
                }
            } catch (Exception e) {
                LOG.error("((XmlWebApplicationContext) event.getSource()).getDisplayName() 执行失败,请检查Spring版本是否支持");
            }
        }
    
    }

    SpringBoot应用程序启动类

    
    @SpringBootApplication
    @ImportResource({"classpath:config/applicationContext-xweb-dubbo.xml","classpath:config/applicationContext-xweb.xml"})
    @Configuration
    @ComponentScan
    @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class, RedisAutoConfiguration.class})
    public class XwebApplication extends WebMvcConfigurerAdapter {
    
        public static void main(String[] args) {
            SpringApplication springApplication =new SpringApplication(XwebApplication.class);
            springApplication.addListeners(new InstantiationTracingBeanPostProcessor());
            springApplication.run(args);
        }  
        
        /**
         * 上传附件容量限制
         * @return
         */
        @Bean  
        public MultipartConfigElement multipartConfigElement() {  
            MultipartConfigFactory factory = new MultipartConfigFactory();
            factory.setMaxFileSize("102400KB");  
            factory.setMaxRequestSize("112400KB");  
            return factory.createMultipartConfig();  
        } 
        
        /**
         * 配置拦截器
         */
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            // 多个拦截器组成一个拦截器链
            // addPathPatterns 用于添加拦截规则
            // excludePathPatterns 用户排除拦截
            registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**");
            super.addInterceptors(registry);
        }
        
    }  
  • 相关阅读:
    Oracle 性能优化之一二
    要一直知道什么是最重要的
    c# 当引用类型作为方法的参数
    BI测试工具之跨数据库数据对比,支持oracle,sqlserver
    c#分页读取GB文本文件
    Merge compare columns when null
    Oracle常用plsql
    quick sort java version
    基于元数据的ETL系统
    Centos 6.5(64bit)上安装Vertica single node
  • 原文地址:https://www.cnblogs.com/cocoat/p/6513985.html
Copyright © 2020-2023  润新知