• 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);
        }
        
    }  
  • 相关阅读:
    wpf数据验证实例及常用方法小结
    wpf自定义colorpicker
    DataGrid绑定Dictionary问题
    DataTemplate和ControlTemplate的关系
    Validation Rule和Binding Group
    WPF converter(包含传递复杂参数)
    【链接】Eclipse的Debug调试技巧
    安装apache服务出错,无法启动此程序,因为计算机中丢失VCRUNTIME140.dll
    apache解压版安装服务
    apache——(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 : AH00072: make_sock: could not bind to address [::]:443
  • 原文地址:https://www.cnblogs.com/cocoat/p/6513985.html
Copyright © 2020-2023  润新知