SpringBoot笔记(5)

SpringBoot笔记(5)

一、Web原生组件注入

1、使用Servlet API

@ServletComponentScan(basePackages = “com.atguigu.admin”) :指定原生Servlet组件都放在那里

@WebServlet(urlPatterns = “/my”):效果:直接响应,没有经过Spring的拦截器?

@WebFilter(urlPatterns={“/css/*”,“/images/*”})

@WebListener

推荐可以这种方式;

扩展:DispatchServlet 如何注册进来

  • 容器中自动配置了 DispatcherServlet 属性绑定到 WebMvcProperties;对应的配置文件配置项是 spring.mvc。
  • 通过 ServletRegistrationBean

    把 DispatcherServlet 配置进来。
  • 默认映射的是 / 路径。

<span>SpringBoot笔记(5)</span>

Tomcat-Servlet;

多个Servlet都能处理到同一层路径,精确优选原则

A: /my/

B: /my/1

2、使用RegistrationBean

ServletRegistrationBean`, `FilterRegistrationBean`, and `ServletListenerRegistrationBean
@Configuration
public class MyRegistConfig {

    @Bean
    public ServletRegistrationBean myServlet(){
        MyServlet myServlet = new MyServlet();

        return new ServletRegistrationBean(myServlet,"/my","/my02");
    }


    @Bean
    public FilterRegistrationBean myFilter(){

        MyFilter myFilter = new MyFilter();
//        return new FilterRegistrationBean(myFilter,myServlet());
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter);
        filterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));
        return filterRegistrationBean;
    }

    @Bean
    public ServletListenerRegistrationBean myListener(){
        MySwervletContextListener mySwervletContextListener = new MySwervletContextListener();
        return new ServletListenerRegistrationBean(mySwervletContextListener);
    }
}

二、定制化原理

1、定制化的常见方式

  • 修改配置文件;
  • xxxxxCustomizer;
  • 编写自定义的配置类 xxxConfiguration;+ @Bean替换、增加容器中默认组件;视图解析器
  • Web应用 编写一个配置类实现 WebMvcConfigurer 即可定制化web功能;+ @Bean给容器中再扩展一些组件
@Configuration
public class AdminWebConfig implements WebMvcConfigurer
  • @EnableWebMvc + WebMvcConfigurer —— @Bean 可以全面接管SpringMVC,所有规则全部自己重新配置; 实现定制和扩展功能

    • 原理
    • 1、WebMvcAutoConfiguration 默认的SpringMVC的自动配置功能类。静态资源、欢迎页…..
    • 2、一旦使用 @EnableWebMvc 、。会 @Import(DelegatingWebMvcConfiguration.class)
    • 3、DelegatingWebMvcConfiguration 的 作用,只保证SpringMVC最基本的使用
      • 把所有系统中的 WebMvcConfigurer 拿过来。所有功能的定制都是这些 WebMvcConfigurer 合起来一起生效
      • 自动配置了一些非常底层的组件。RequestMappingHandlerMapping、这些组件依赖的组件都是从容器中获取
      • public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport
    • 4、WebMvcAutoConfiguration 里面的配置要能生效 必须 @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
    • 5、@EnableWebMvc 导致了 WebMvcAutoConfiguration 没有生效。
  • … …

2、原理分析套路

场景starter – xxxxAutoConfiguration – 导入xxx组件 – 绑定xxxProperties — 绑定配置文件项

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115187.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ping不是内部或外部命令也不是可运行win10_电脑关掉防火墙仍然ping不通

    ping不是内部或外部命令也不是可运行win10_电脑关掉防火墙仍然ping不通前段时间配置Java环境将Path配置错误了计算机右键点击属性高级系统设置->环境变量系统变量编辑Path添加语句;C:\Windows\System32重新打开cmdpingwww.baidu.comnetstat-a出现上图表示配置成功…

    2022年10月30日
  • unity3d的入门教程_3D网课

    unity3d的入门教程_3D网课参考链接:《Unity3D初级课程之新手入门》文章目录第一课:课程介绍与Unity3D环境搭建一、Unity下载与安装第二课:游戏场景基本操作一、新建项目与新建场景二、基本3D物体的创建三、Scene面板基础操作第三课:游戏场景制作3D模型一、尺寸与方向二、3D模型制作第四课:3D模型美化之材质球一、材质球与贴图二、创建与使用材质球三、shader简介第五课:3D模型重用之预制体一、父子关系二、预制体第六课:基本组件之摄像机一、场景美化第一课:课程介绍与Unity3D环境搭建一、Unity下

    2022年8月10日
  • 股票实盘交易接口API(招商证券交易接口api)

    股票配资系统实盘交易接口怎么做有没有好用的实盘交易接口股票实盘交易接口做股票配资系统难免会用到交易接口,好用的能用的接口也少。券商那边也不提供,那索性自己开发股票配资实盘交易接口了。经过多次尝试,总算搞出来了,实时交易接口可以获取用户数据,实时对接,账户信息,委托买入卖出,支持多家券商。我们做股票配资系统的时候遇到过很多次交易接口问题,然后后面终于是解决了,现在我们的股票配资系统已经很完善…

    2022年4月15日
  • 如何获取dropdownlist的值_mycat 数据库绑定

    如何获取dropdownlist的值_mycat 数据库绑定这几天遇到再DropDownList中,如何将数据库中的内容与DropDownList下拉框中的值关联起来,步骤如下:(1)建立要关联的数据库(在本例中假设为dept);要定义一个数据表用来取得这个表中的内容,代码如下:publicDataTableReaderSelectDept(){DataTableReaderdr=null;try{RunSQL

    2022年10月8日
  • 安卓关闭按键灯_怎么关闭电脑键盘灯光

    安卓关闭按键灯_怎么关闭电脑键盘灯光还在因为看电子书和看电影时键盘灯刺眼而苦恼吗?下面提供一个方法关闭键盘灯,让你轻松DIY!1、手机必须先Root。使用RE管理器,按照这个路径,找到文件:brightnesssys/devices/p

    2022年8月1日
  • python之路

    python之路

    2021年9月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号