当前位置: 首页 > news >正文

无锡网站建设机构江苏城乡与住房建设厅网站

无锡网站建设机构,江苏城乡与住房建设厅网站,商标注册官网查询,静态网站开发百科目录 依赖管理关于各种的 start 依赖关于自动配置关于约定大于配置中的配置SpringBoot 整合 SpringMVC定制化 SpringMVC静态资源处理对上传文件的处理对异常的处理Web原生组件注入#xff08;Servlet、Filter、Listener#xff09;Interceptor 自定义拦截器DispatcherServlet… 目录 依赖管理关于各种的 start 依赖关于自动配置关于约定大于配置中的配置SpringBoot 整合 SpringMVC定制化 SpringMVC静态资源处理对上传文件的处理对异常的处理Web原生组件注入Servlet、Filter、ListenerInterceptor 自定义拦截器DispatcherServlet 配置映射路径定制 内嵌的 服务器定制化总结 SpringBoot 整合 MybatisSpringBoot 整合 MybatisPlus 依赖管理 每个刚创建的 SpringBoot 项目的 pom 文件都有spring-boot-starter-parent依赖然后它还有一个父依赖spring-boot-dependenciesspring-boot-dependencies 决定了 SpringBoot 项目的依赖版本但是如果不遵循也是可以的可以自己导入新的依赖版本如果遵循 SpringBoot 的版本引入相应的依赖的时候依赖的坐标就可以不标明版本号了 关于各种的 start 依赖 导入这些 start 依赖就是导入了和这个 start 依赖 有关的组件的所有相关依赖然后再通过 SpringBoot 的自动配置做到开箱即用 关于自动配置 自动配置主要看 启动类 的注解 SpringBootApplication其中最主要的是注解 EnableAutoConfiguration这个注解又包含AutoConfigurationPackage、Import(AutoConfigurationImportSelector.class)AutoConfigurationPackage包含Import(AutoConfigurationPackages.Registrar.class)其中AutoConfigurationPackages.Registrar.class的作用就是得到 启动类 所在的包路径然后扫描包路径下的所有 类 该添加到容器的添加不该添加的忽略Import(AutoConfigurationImportSelector.class)的关键就是AutoConfigurationImportSelector.class这个类是实现自动配置的主要入口主要的逻辑顺序是org.springframework.boot.autoconfigure.AutoConfigurationImportSelector#getCandidateConfigurationsorg.springframework.core.io.support.SpringFactoriesLoader#loadFactoryNamesorg.springframework.core.io.support.SpringFactoriesLoader#loadSpringFactories经过上面的调用步骤最终关键的就是classLoader.getResources(META-INF/spring.factories)所以实现自动配置就是扫描引入依赖的类路径下的spring.factories中的内容这个文件中的类容就是各种配置类 随便点开一个自动配置类就会发现各种Bean、Conditional、EnableConfigurationProperties、ConditionalOnMissingBean...这些注解就是自动配置的关键满足条件就会注册到容器中并且还会带默认的配置这就是开箱即用约定大于配置 关于约定大于配置中的配置 前面已经知道自动配置的来源就是各种自动配置类以 SpringMVC 的相关的自动配置类 WebMvcAutoConfiguration 为例可以观察到类似EnableConfigurationProperties({WebProperties.class})、ConditionalOnProperty( prefix spring.mvc.problemdetails, name {enabled},havingValue true )、ConditionalOnProperty(prefix spring.mvc.formcontent.filter, name {enabled},matchIfMissing true)...通过这样带有配置关键字的注解可以发现要么在注解上就标明了配置内容和默认值要么就是通过 xxxProperties 这样的类其中内容也大多是如图所示的内容可以发现就是一些配置文件里面的内容如果没有配置也会有默认值 SpringBoot 整合 SpringMVC 定制化 SpringMVC 定制化功能主要通过观察 SpringMVC 的自动配置类通过实现 WebMvcConfigurer 接口作为配置类添加自定义的功能 通过在配置类中 创建 HiddenHttpMethodFilter 的实例到容器自定义 HiddenHttpMethodFilter 需要先开启配置spring.mvc.hiddenmethod.filter.enabledtrue 在配置类上使用 EnableWebMvc 意味着完全自定义 SpringMVC 相当于回到最原始的 web 程序开发 静态资源处理 静态资源处理已经默认开启spring.resources.add-mappingstrue默认的静态资源路径如下参照 自动配置类 WebMvcAutoConfiguration 引入了 webMvcProperties 的属性配置 自定义静态资源路径spring.resources.static-locations{ classpath:/META-INF/resources/,classpath:/resources/, classpath:/static/, classpath:/public/ }自定义静态资源请求路径映射spring.mvc.static-path-pattern/**默认就是/**让客户端缓存静态资源spring.resources.cache.period10000单位是s 对上传文件的处理 SpringBoot 默认已经配置好 文件上传需要的 依赖和配置但是还是要设置文件的大小配置的 # 单个文件的最大限制 spring.servlet.multipart.max-file-size10MB # 整个请求的最大限制 spring.servlet.multipart.max-request-size100MB对异常的处理 对异常的处理SpringBoot 已经有了默认的配置 直接 在静态资源路径 添加 错误码.html如5xx.html就对应5开头的错误码比如500这种方式利用了默认配置改变的只是错误的展示页面使用的是 DefaultHandlerException—DefaultErrorViewResolver直接 创建一个 名字是 ErrorController 的处理器这种方式错误的处理和页面跳转完全由开发者控制直接 在配置类中 创建一个 ErrorAttributes 的实例这种方式只是修改了错误的提示信息依然还是使用 DefaultHandlerException—DefaultErrorViewResolver 自定义实现 HandlerExceptionResolver 处理异常可以作为默认的全局异常处理规则ControllerAdviceExceptionHandler处理全局异常底层是 ExceptionHandlerExceptionResolver 支持的 /*** 处理整个web controller的异常*/ Slf4j ControllerAdvice public class GlobalExceptionHandler {ExceptionHandler({ArithmeticException.class,NullPointerException.class}) //处理异常public String handleArithException(Exception e){log.error(异常是{},e);return login; //视图地址} }ResponseStatus 自定义异常实际上是交给ResponseStatusExceptionResolver处理最终由 Tomcat 发送错误信息返回前端只改变了错误信息而且使用的是最原始的 Tomcat 错误页面 ResponseStatus(value HttpStatus.FORBIDDEN,reason 用户数量太多) public class UserTooManyException extends RuntimeException {public UserTooManyException(){}public UserTooManyException(String message){super(message);} }Web原生组件注入Servlet、Filter、Listener 通过注解 WebFilter、WebServlet、WebListener通过 Servlet、Filter、Listener 它们的子类然后在配置类中注册 Interceptor 自定义拦截器 自定义的拦截器对于自定义的 servlet 不起作用因为 拦截器起作用是建立在 DispatcherServlet 的代码逻辑上的 org.springframework.web.servlet.DispatcherServlet#doDispatch --- org.springframework.web.servlet.HandlerExecutionChain#applyPreHandle DispatcherServlet 配置映射路径 在 SpringBoot 中 DispatcherServlet 通过 DispatcherServletAutoConfiguration--DispatcherServletRegistrationBean--ServletRegistrationBean完成注册到容器使用的是 webMvcProperties 的属性配置修改映射路径 spring.mvc.servlet.path/默认配置也是/ 定制 内嵌的 服务器 程序启动会创建一个 web 版的IoC容器 ServletWebServerApplicationContext 其逻辑是org.springframework.boot.web.embedded.xxxxx.xxxxServletWebServerFactory#getWebServer---org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext#getWebServerFactory--ServletWebServerFactoryxxxx就是下面步骤获得的服务器工厂的服务器名org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration---org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration--根据导入的依赖决定是那种服务器的 ServletWebServerFactory其中服务器工厂的自动配置类决定了我们对服务器的个性化配置的方式要么修改配置文件ServerProperties、要么模仿 ServletWebServerFactoryCustomizer 实现 org.springframework.boot.web.server.WebServerFactoryCustomizer#customize SpringMVC 的 start 默认是导入 Tomcat 依赖的如果想要换服务器应该先排除 Tomcat 依赖再导入其它服务器的依赖 定制化总结 SpringBoot 整合 Mybatis 在不使用多数据源的情况下直接从 github 上导入依赖mybatis-spring-boot-starter通过依赖中的 自动配置类 配置相关的属性通过观察自动配置类发现 会自动扫描 加了 Mapper 的 Mapper 接口并注册代理对象到容器中也可以通过在配置类or启动类上添加MapperScan避免每个 Mapper 接口都要加 Mapper两种配置方式1.配置文件xmconfig-locationl、2.配置文件yum/propertiesconfiguration两种方式只能选择一种 # 配置mybatis规则 mybatis: # config-location: classpath:mybatis/mybatis-config.xmlmapper-locations: classpath:mybatis/mapper/*.xmlconfiguration:map-underscore-to-camel-case: tru可以实现全注解开发不需要映射文件xml直接在 Mapper 接口的方法上添加对应的注解如Select对应映射文件中select标签、Option对应各种语句标签的属性如Option(useGeneratedKeys true,keyProperty id) SpringBoot 整合 MybatisPlus
http://www.hkea.cn/news/14257638/

相关文章:

  • 网站制作软件培训国外WordPress主题速度慢
  • 网站开发成本核算及账务处理最新流行网站开发技术
  • 有哪些可以接单做任务的网站无锡网站建设制作
  • 公司网站开发找哪家初中毕业学网站开发工程师
  • dede 购物网站网站建设时送的ppt方案
  • 网站自动更新时间代码网站图片怎么做优化
  • 微信服务号绑定网站网站开发技术人员
  • 网站建设二级页面方案做个淘宝客网站怎么做的
  • 做黄金的经常看什么网站wordpress博客福利网整站源码
  • 如何造网站wordpress动漫电影主题
  • 企业网站策划方案书做电商设计在哪个网站接单
  • 昆明比较好的网站开发公司交互设计精髓
  • 丽水网站建设企业app软件开发公司怎么选
  • 仿门户网站多功能js相册画廊源码网站开发容易做吗
  • 网站制作公司多少钱个人门户网站模板下载
  • 承接网站开发 app开发青岛主流网站
  • 有域名怎么建立网站北京模板网站开发
  • 建网站自学h5开发环境
  • 全球50个大网站开发语言常州百度推广代理
  • 个人可以建设网站吗还能做网站的分类
  • 自己切片视频做网站西安高端网站设计公司
  • 龙岗区做网站杭州做网站外包公司哪家好
  • 国外做mg动画的网站大全深圳企业网页制作
  • 静态网站设计与制作书籍无锡室内设计公司
  • 网站icp备案代理自己做的图片哪个网站可以出售
  • 域名空间做网站wordpress清除插件
  • 网站加速器免费永久如何优化自己的网站
  • 白银市城乡建设局网站运营网站是什么意思
  • 做网站主要用哪种语言梵克雅宝是哪个国家的牌子
  • 织梦如何做几种语言的网站网站建设与维护理解