當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
[SpringBoot2]原生组件注入_原生注解与Spring方式注入
生活随笔
收集整理的這篇文章主要介紹了
[SpringBoot2]原生组件注入_原生注解与Spring方式注入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、使用Servlet API
@ServletComponentScan(basePackages = “com.atguigu.admin”)
:指定原生Servlet組件都放在那里
@WebServlet(urlPatterns ="/my"):效果:直接響應,沒有經過Spring的攔截器?
@WebFilter(urlPatterns={"/css/","/images/"})
@WebListener
2、使用RegistrationBean
@Slf4j //@WebFilter(urlPatterns = {"/css/*","/images/*"}) public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info("init finished");}@Overridepublic void destroy() {log.info("destroy finished");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {log.info("myFilter work");filterChain.doFilter(servletRequest,servletResponse);} }//=======================================================//@WebServlet(urlPatterns = "/my") public class MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().write("66666");}}//=================================================================@Slf4j //@WebListener public class MyServletContextListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {log.info("MyServletContextListener init finished");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {log.info("MyServletContextListener destory finished");}} @Configuration(proxyBeanMethods = true) public class MyRegistConfig {@Beanpublic ServletRegistrationBean myServlet(){MyServlet myServlet = new MyServlet();return new ServletRegistrationBean(myServlet,"/my","/my02");}@Beanpublic FilterRegistrationBean myFilter(){MyFilter myFilter = new MyFilter();// 方式一: // return new FilterRegistrationBean(myFilter,myServlet());//方式二:FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter);filterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));return filterRegistrationBean;}@Beanpublic ServletListenerRegistrationBean myListener(){MyServletContextListener myServletContextListener = new MyServletContextListener();return new ServletListenerRegistrationBean(myServletContextListener);}}注意:
@Configuration(proxyBeanMethods = true)保證依賴的組件始終是單實例的
如果我們寫成
@Configuration(proxyBeanMethods = false)說明我們當前類,每次調用一次myServlet方法,就會創建一個新的MyServlet,有可能導致我們一調用下面的過濾器方法就會創建一個新的MyServlet,會導致我們容器中有很多冗余的其他對象!
return new FilterRegistrationBean(myFilter,myServlet());總結
以上是生活随笔為你收集整理的[SpringBoot2]原生组件注入_原生注解与Spring方式注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公元元年是哪个朝代(公元元年是哪一年
- 下一篇: 华为手机音量小怎么办