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

计算机软件开发网站建设取什么名字破解asp网站后台密码

计算机软件开发网站建设取什么名字,破解asp网站后台密码,官网登录入口在哪里,建二手车网站MVC自动配置原理 官网阅读 在进行项目编写前#xff0c;我们还需要知道一个东西#xff0c;就是SpringBoot对我们的SpringMVC还做了哪些配置#xff0c;包括如何扩展#xff0c;如何定制。 只有把这些都搞清楚了#xff0c;我们在之后使用才会更加得心应手。途径一我们还需要知道一个东西就是SpringBoot对我们的SpringMVC还做了哪些配置包括如何扩展如何定制。 只有把这些都搞清楚了我们在之后使用才会更加得心应手。途径一源码分析途径二官方文档 地址 https://docs.spring.io/spring-boot/docs/2.4.1.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-auto-configuration Spring MVC Auto-configuration // Spring Boot为Spring MVC提供了自动配置它可以很好地与大多数应用程序一起工作。 Spring Boot provides auto-configuration for Spring MVC that works well with most applications. // 自动配置在Spring默认设置的基础上添加了以下功能 The auto-configuration adds the following features on top of Spring’s defaults: // 包含视图解析器 Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans. // 支持静态资源文件夹的路径以及webjars Support for serving static resources, including support for WebJars // 自动注册了Converter // 转换器这就是我们网页提交数据到后台自动封装成为对象的东西比如把1字符串自动转换为int类型 // Formatter【格式化器比如页面给我们了一个2019-8-10它会给我们自动格式化为Date对象】 Automatic registration of Converter, GenericConverter, and Formatter beans. // HttpMessageConverters // SpringMVC用来转换Http请求和响应的的比如我们要把一个User对象转换为JSON字符串可以去看官网文档解释 Support for HttpMessageConverters (covered later in this document). // 定义错误代码生成规则的 Automatic registration of MessageCodesResolver (covered later in this document). // 首页定制 Static index.html support. // 图标定制 Custom Favicon support (covered later in this document). // 初始化数据绑定器帮我们把请求数据绑定到JavaBean中 Automatic use of a ConfigurableWebBindingInitializer bean (covered later in this document)./* 如果您希望保留Spring Boot MVC功能并且希望添加其他MVC配置拦截器、格式化程序、视图控制器和其他功能则可以添加自己 的configuration类类型为webmvcconfiguer但不添加EnableWebMvc。如果希望提供 RequestMappingHandlerMapping、RequestMappingHandlerAdapter或ExceptionHandlerExceptionResolver的自定义 实例则可以声明WebMVCregistrationAdapter实例来提供此类组件。 */ If you want to keep Spring Boot MVC features and you want to add additional MVC configuration (interceptors, formatters, view controllers, and other features), you can add your own Configuration class of type WebMvcConfigurer but without EnableWebMvc. If you wish to provide custom instances of RequestMappingHandlerMapping, RequestMappingHandlerAdapter, or ExceptionHandlerExceptionResolver, you can declare a WebMvcRegistrationsAdapter instance to provide such components.// 如果您想完全控制Spring MVC可以添加自己的Configuration并用EnableWebMvc进行注释。 If you want to take complete control of Spring MVC, you can add your own Configuration annotated with EnableWebMvc.我们来仔细对照看一下它怎么实现的它告诉我们SpringBoot已经帮我们自动配置好了SpringMVC然后自动配置了哪些东西呢 ContentNegotiatingViewResolver 内容协商视图解析器 自动配置了ViewResolver就是我们之前学习的SpringMVC的视图解析器 即根据方法的返回值取得视图对象View然后由视图对象决定如何渲染转发重定向。 我们去看看这里的源码我们找到 WebMvcAutoConfiguration 然后搜索ContentNegotiatingViewResolver。找到如下方法 Bean ConditionalOnBean(ViewResolver.class) ConditionalOnMissingBean(name viewResolver, value ContentNegotiatingViewResolver.class) public ContentNegotiatingViewResolver viewResolver(BeanFactory beanFactory) {ContentNegotiatingViewResolver resolver new ContentNegotiatingViewResolver();resolver.setContentNegotiationManager(beanFactory.getBean(ContentNegotiationManager.class));// ContentNegotiatingViewResolver使用所有其他视图解析器来定位视图因此它应该具有较高的优先级resolver.setOrder(Ordered.HIGHEST_PRECEDENCE);return resolver; }我们可以点进这类看看找到对应的解析视图的代码 Nullable // 注解说明Nullable 即参数可为null public View resolveViewName(String viewName, Locale locale) throws Exception {RequestAttributes attrs RequestContextHolder.getRequestAttributes();Assert.state(attrs instanceof ServletRequestAttributes, No current ServletRequestAttributes);ListMediaType requestedMediaTypes this.getMediaTypes(((ServletRequestAttributes)attrs).getRequest());if (requestedMediaTypes ! null) {// 获取候选的视图对象ListView candidateViews this.getCandidateViews(viewName, locale, requestedMediaTypes);// 选择一个最适合的视图对象然后把这个对象返回View bestView this.getBestView(candidateViews, requestedMediaTypes, attrs);if (bestView ! null) {return bestView;}}// ..... }我们继续点进去看他是怎么获得候选的视图的呢 getCandidateViews中看到他是把所有的视图解析器拿来进行while循环挨个解析 Iterator var5 this.viewResolvers.iterator();所以得出结论ContentNegotiatingViewResolver 这个视图解析器就是用来组合所有的视图解析器的 我们再去研究下他的组合逻辑看到有个属性viewResolvers看看它是在哪里进行赋值的 protected void initServletContext(ServletContext servletContext) {// 这里它是从beanFactory工具中获取容器中的所有视图解析器// ViewRescolver.class 把所有的视图解析器来组合的CollectionViewResolver matchingBeans BeanFactoryUtils.beansOfTypeIncludingAncestors(this.obtainApplicationContext(), ViewResolver.class).values();ViewResolver viewResolver;if (this.viewResolvers null) {this.viewResolvers new ArrayList(matchingBeans.size());}// ............... }既然它是在容器中去找视图解析器我们是否可以猜想我们就可以去实现一个视图解析器了呢 我们可以自己给容器中去添加一个视图解析器这个类就会帮我们自动的将它组合进来我们去实现一下 1、我们在我们的主程序中去写一个视图解析器来试试 Bean //放到bean中public ViewResolver myViewResolver(){ return new MyViewResolver();} //我们写一个静态内部类视图解析器就需要实现ViewResolver接口private static class MyViewResolver implements ViewResolver{ Override public View resolveViewName(String s, Locale locale) throws Exception { return null; }}2、怎么看我们自己写的视图解析器有没有起作用呢 我们给 DispatcherServlet 中的 doDispatch方法 加个断点进行调试一下因为所有的请求都会走到这个方法中 3、我们启动我们的项目然后随便访问一个页面看一下Debug信息 找到this 找到视图解析器我们看到我们自己定义的就在这里了 所以说我们如果想要使用自己定制化的东西我们只需要给容器中添加这个组件就好了剩下的事情SpringBoot就会帮我们做了 转换器和格式化器 找到格式化转换器 Bean Override public FormattingConversionService mvcConversionService() {// 拿到配置文件中的格式化规则WebConversionService conversionService new WebConversionService(this.mvcProperties.getDateFormat());addFormatters(conversionService);return conversionService; }点击去 public String getDateFormat() { return this.dateFormat; } /*** Date format to use. For instance, dd/MM/yyyy. 默认的 */ private String dateFormat;可以看到在我们的Properties文件中我们可以进行自动配置它 如果配置了自己的格式化方式就会注册到Bean中生效我们可以在配置文件中配置日期格式化的规则 修改SpringBoot的默认配置 这么多的自动配置原理都是一样的通过这个WebMVC的自动配置原理分析我们要学会一种学习方式通过源码探究得出结论这个结论一定是属于自己的而且一通百通。 SpringBoot的底层大量用到了这些设计细节思想所以没事需要多阅读源码得出结论 SpringBoot在自动配置很多组件的时候先看容器中有没有用户自己配置的如果用户自己配置bean如果有就用用户配置的如果没有就用自动配置的 如果有些组件可以存在多个比如我们的视图解析器就将用户配置的和自己默认的组合起来 扩展使用SpringMVC 官方文档如下 If you want to keep Spring Boot MVC features and you want to add additional MVC configuration (interceptors, formatters, view controllers, and other features), you can add your own Configuration class of type WebMvcConfigurer but without EnableWebMvc. If you wish to provide custom instances of RequestMappingHandlerMapping, RequestMappingHandlerAdapter, or ExceptionHandlerExceptionResolver, you can declare a WebMvcRegistrationsAdapter instance to provide such components. 我们要做的就是编写一个Configuration注解类并且类型要为WebMvcConfigurer还不能标注EnableWebMvc注解我们去自己写一个我们新建一个包叫config写一个类MyMvcConfig //应为类型要求为WebMvcConfigurer所以我们实现其接口 //可以使用自定义类扩展MVC的功能 Configuration public class MyMvcConfig implements WebMvcConfigurer {Overridepublic void addViewControllers(ViewControllerRegistry registry) {// 浏览器发送/test 就会跳转到test页面registry.addViewController(/test).setViewName(test);} }我们去浏览器访问一下 确实也跳转过来了所以说我们要扩展SpringMVC官方就推荐我们这么去使用既保SpringBoot留所有的自动配置也能用我们扩展的配置 我们可以去分析一下原理 1、WebMvcAutoConfiguration 是 SpringMVC的自动配置类里面有一个类WebMvcAutoConfigurationAdapter 2、这个类上有一个注解在做其他自动配置时会导入Import(EnableWebMvcConfiguration.class) 3、我们点进EnableWebMvcConfiguration这个类看一下它继承了一个父类DelegatingWebMvcConfiguration 这个父类中有这样一段代码 public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {private final WebMvcConfigurerComposite configurers new WebMvcConfigurerComposite();// 从容器中获取所有的webmvcConfigurerAutowired(required false)public void setConfigurers(ListWebMvcConfigurer configurers) {if (!CollectionUtils.isEmpty(configurers)) {this.configurers.addWebMvcConfigurers(configurers);}} }4、我们可以在这个类中去寻找一个我们刚才设置的viewController当做参考发现它调用了一个 protected void addViewControllers(ViewControllerRegistry registry) {this.configurers.addViewControllers(registry); }5、我们点进去看一下 public void addViewControllers(ViewControllerRegistry registry) {Iterator var2 this.delegates.iterator();while(var2.hasNext()) {// 将所有的WebMvcConfigurer相关配置来一起调用包括我们自己配置的和Spring给我们配置的WebMvcConfigurer delegate (WebMvcConfigurer)var2.next();delegate.addViewControllers(registry);}}所以得出结论所有的WebMvcConfiguration都会被作用不止Spring自己的配置类我们自己的配置类当然也会被调用 全面接管SpringMVC 官方文档 If you want to take complete control of Spring MVCyou can add your own Configuration annotated with EnableWebMvc.全面接管即SpringBoot对SpringMVC的自动配置不需要了所有都是我们自己去配置 只需在我们的配置类中要加一个EnableWebMvc。 我们看下如果我们全面接管了SpringMVC了我们之前SpringBoot给我们配置的静态资源映射一定会无效我们可以去测试一下 不加注解之前访问首页 给配置类加上注解EnableWebMvc 我们发现所有的SpringMVC自动配置都失效了回归到了最初的样子 当然我们开发中不推荐使用全面接管SpringMVC 思考问题为什么加了一个注解自动配置就失效了我们看下源码 1、这里发现它是导入了一个类我们可以继续进去看 Import({DelegatingWebMvcConfiguration.class})public interface EnableWebMvc {}2、它继承了一个父类 WebMvcConfigurationSupport public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport { // ......}3、我们来回顾一下Webmvc自动配置类 Configuration(proxyBeanMethods false) ConditionalOnWebApplication(type Type.SERVLET) ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class }) // 这个注解的意思就是容器中没有这个组件的时候这个自动配置类才生效 ConditionalOnMissingBean(WebMvcConfigurationSupport.class) AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE 10) AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,ValidationAutoConfiguration.class }) public class WebMvcAutoConfiguration {}总结一句话EnableWebMvc将WebMvcConfigurationSupport组件导入进来了 而导入的WebMvcConfigurationSupport只是SpringMVC最基本的功能 在SpringBoot中会有非常多的扩展配置只要看见了这个我们就应该多留心注意~
http://www.pierceye.com/news/491244/

相关文章:

  • 光明区建设局网站云南省工程建设造价协会网站
  • 网站建设视频教程 百度云网站制作背景图片
  • 网站域名起名网站建设企业排行榜
  • 高端品牌网站定制设计wordpress多张页面左右滑动
  • git网站开发网名logo设计制作
  • seo在线网站诊断推推蛙seo兼职怎么收费
  • 网站数据分析视频深圳市昊客网络科技有限公司
  • 外贸网站做开关行业的哪个好网站互动优化
  • 西班牙语网站设计哪家好开发一个跑腿app需要多少钱
  • 怎么才能提高网站点击量 免费网站原型图软件
  • wordpress私人建站主题网络公司手机网站
  • 做网站设计比较好的公司wordpress wp_trim_words
  • 湖南对外建设集团网站wordpress中数据库配置文件
  • 设计类网站模板物流企业网站建设策划书
  • dw建设手机网站永久免费网站推荐
  • 微信官方网站怎么进入自己做网站推广试玩
  • 郑州网站建设老牌公司贵州省城乡建设厅网站材料价
  • 网站建设费是什么上海建设网站公司
  • 怎么查出这个网站是谁做的谷歌首页
  • 桂林网站建设国内crm系统哪家好
  • 网站建设数据库配置查看商标是否被注册官网
  • 关于网站制作做网站用com还是cn好
  • 手机网站支付网站建设 sheji021
  • 兴义网站制作网上开的公司网站打不开
  • 三只松鼠的网站建设理念桐庐营销型网站建设
  • 建设银行网站未响应大理如何做百度的网站
  • 广州建立公司网站多少钱页面跳转不了怎么回事
  • 爱做的小说网站吗百度权重高的发帖网站
  • 做网站的空间费用要多少产品怎么做推广和宣传
  • 商城网站制作明细老牌深圳公司大雨中解散