1. 程式人生 > >springboot整合Shiro,新增自定義filter後shiro的預設filter無法使用

springboot整合Shiro,新增自定義filter後shiro的預設filter無法使用

在springboot中整合shiro,發現再添加了自定義的filter後預設的filter無法使用。 猜測是自定義的filter被放在了預設的filter前面,導致先被自定義的filter攔截了。 證實了的確是我所猜想的那般,自定義的filter被放在了shiro預設filter的前面。 根據上面文章作者所說,不要將自定義的在spring容器中進行註冊
不過這樣又導致了一個新的問題,自定義的filter中無法將spring容器中的bean注入到變數中
注意,這裡的Resource註解是後來才去掉的,不要跟我說是因為註釋掉了才無法注入。 最後的解決辦法就是手動從spring容器中獲取bean,然後進行賦值:
這裡附上SpringContextUtils的程式碼
@Component
public class SpringContextUtils implements ApplicationContextAware {
    private static ApplicationContext context;

    public void setApplicationContext(ApplicationContext context)
            throws BeansException {
        SpringContextUtils.context = context;
    }

    public static ApplicationContext getContext(){
        return context;
    }
}