没有梦想,何必远方

springboot添加拦截器 监听等设置

1.添加拦截器

package com.jy.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import yaycrawler.common.interceptor.SignatureSecurityInterceptor;


@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
    
    /**
        添加拦截器
  
WebMvcConfigurerAdapter 显示过期,则使用继承至org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport
*/ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MySignatureSecurityInterceptor()).addPathPatterns("/admin/**","/manager/**"); } }

2、创建监听器

package com.jy.listener;

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.web.context.WebApplicationContext;

/**
 * 
 * 启动worker监听器 
 */
public class MyRegisterListener implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        WebApplicationContext context = (WebApplicationContext) contextRefreshedEvent.getApplicationContext();
        WorkerContext.webApplicationContext = context;
        Userservice userservice = context.getBean(Userservice.class);
        //做其他操作
       
    }
}

3、添加监听器

package com.jy;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import yaycrawler.worker.listener.WorkerRegisterListener;

/**
 * 启动时,向master注册 
 */
public class ServletInitializer extends SpringBootServletInitializer {
   
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    //如上第二部创建的监听器 application.listeners(
new MyRegisterListener()); return application.sources(Application.class); } }

4、项目启动时初始化操作(例如初始化项目根路径)

package com.jy.context;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import org.springframework.util.ResourceUtils;

import java.io.File;
import java.io.FileNotFoundException;

@Component
public class MyContextAware implements ApplicationContextAware {

    private Logger logger = LoggerFactory.getLogger(MyContextAware.class);

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        
        //获取跟目录
        File path = null;
        try {
            path = new File(ResourceUtils.getURL("classpath:").getPath());
            if(!path.exists()) {
                path = new File("");
            }
            //自行定义的类Global,ROOT为static 变量;项目启动时初始化项目路径 
            Global.ROOT = path.getAbsolutePath()+File.separator;

            /*
                在开发测试模式时,得到的地址为:{项目跟目录}/target/classes/
                在打包成jar正式发布时,得到的地址为:{发布jar包目录}/
            */

        } catch (FileNotFoundException e) {
            logger.error("FileNotFoundException",e);
        }
        logger.info("Global.ROOT {}",Global.ROOT);
    }

}

 

posted @ 2019-03-08 22:03  北极丶光  阅读(965)  评论(0编辑  收藏  举报