zoukankan      html  css  js  c++  java
  • SpringBoot中在除controller以外注入service-过滤器中注入

    一般我们都是在controller层注入service那么如何在过滤器中注入service呢 一般使用过滤器在启动类中添加如下代码

     1 @SpringBootApplication
     2 @MapperScan("com.cmbchina.ccd.itpm.baffle.dao")
     3 
     4 public class BaffleApplication extends SpringBootServletInitializer {
     5     @Override
     6     protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
     7         return builder.sources(BaffleApplication.class);
     8     }
     9 
    10     public static void main(String[] args) {
    11         SpringApplication.run(BaffleApplication.class, args);
    12     }
    13     //配置过滤器
    14     @Bean
    15     public FilterRegistrationBean filterRegistrationBean(){
    16         FilterRegistrationBean filterFilterRegistrationBean = new FilterRegistrationBean(new UrlFilter());
    17         filterFilterRegistrationBean.addUrlPatterns("/*");
    18         return filterFilterRegistrationBean;
    19     }
    20 
    21 
    22 }

    这样的话启动的时候就会加载这个过滤器 要是直接在过滤器中直接@Autowired 会出先空指针的我们可以采用下面的方法

     1 @Component
     2 public class UrlFilter implements Filter {
     3     @Autowired
     4     private UrlServicer urlServicer;
     5    /* private static  Logger logger= LoggerFactory.getLogger(UrlFilter .class);*/
     6     @Override
     7     public void init(FilterConfig filterConfig) throws ServletException {
     8         ServletContext sc = filterConfig.getServletContext();
     9         WebApplicationContext cxt = WebApplicationContextUtils.getWebApplicationContext(sc);
    10         if(cxt != null && cxt.getBean(UrlServicer.class) != null && urlServicer == null) {
    11             urlServicer =cxt.getBean(UrlServicer.class);
    12         }
    13     }

    在过滤器加上@Component注解在init方法中初始化你要注入的service就可以了

    感谢阅读

    努力提高自己的技术,不忘初心
  • 相关阅读:
    如何简单实现一个react组件
    css实现弹框
    flex实现流式布局
    classnames的简单使用
    css处理内容溢出
    webpack学习
    github+hexo搭建,运行hexo g报错
    (附代码和截图)spring基于注解的java定时任务功能实现
    关于Cookie、session和localStorage、以及sessionStorage之间的区别和联系,超详细
    今天向大家推荐一个很强的编辑器——notepad++,没有插件plugin Manager的解决办法
  • 原文地址:https://www.cnblogs.com/blackCatFish/p/9841802.html
Copyright © 2011-2022 走看看