当前位置: 首页 > 后端技术 > Java

腾讯T3-3高级架构师辛苦整理:10万字节springboot教程全解!

时间:2023-04-01 17:33:55 Java

前言:毫不夸张的说,本文介绍的SpringBoot教程基本涵盖了你在工作中遇到的大部分常用场景。对于每个springboot的用法,文中都会有详细的教程讲解。本文共29章248页PDF,讲解了springboot在各种环境下的各种用法。文章为大家列出了一些springboot教程。需要这份10万字节springboot完整教程PDF的朋友,可以关注一下。编辑+转发文章+私信【springboot】获取教程文档。纯Java搭建SSM项目在SpringBoot项目中,一般是没有XML配置的。这是因为SpringBoot不推荐使用XML。请注意,它并非不受支持。SpringBoot推荐开发者使用Java配置来构建框架。SpringBoot中,大量的自动配置都是通过Java配置来实现的。这套实现方案我们也可以自己做,也就是我们也可以使用纯Java搭建SSM环境,即项目中没有XML配置,包括web.xml。环境要求:使用纯Java搭建SSM环境,Tomcat版本必须在7以上。快速体验1创建项目创建一个普通的Maven项目(注意这里不需要创建Web项目),添加SpringMVC依赖。同时这里的环境需要使用Servlet,所以我们还需要引入Servlet依赖(一定不能使用低版本的Servlet),最终的pom.xml文件如下:org.springframeworkspring-webmvc<版本>5.1.6.RELEASEjavax.servletjavax.servlet-api4.0.1provided2添加Spring配置项目创建成功后,首先添加Spring配置文件,如下:@Configuration@ComponentScan(basePackages="org.javaboy",useDefaultFilters=true,excludeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION,classes=Controller.class)})publicclassSpringConfig{}关于这个配置,我说的以下几点:@Configuration注解表示这是一个配置类,在我们的例子中,这个配置的作用类似于applicationContext.xml@ComponentScan注解配置包扫描,里面的属性和xml配置中的属性是一体的-一一对应,使用DefaultFilters的意思是使用默认的filter,然后去掉Controller注解,即扫描Spring容器中除Controller之外的所有bean3添加SpringMVC配置接下来创建springmvc配置文件:@Configuration@ComponentScan(basePackages="org.javaboy",useDefaultFilters=false,includeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION,classes=Controller.class)})publicclassSpringMVCConfig{}注意,如果你不需要在SpringMVC中添加其他额外的配置,这就是它。也就是视图解析器、JSON解析、文件上传等,如果不需要配置,这个就好了。4配置web.xml此时,我们还没有web.xml文件。这时候我们就可以使用Java代码来替换web.xml文件。这里我们将使用WebApplicationInitializer。具体定义如下:ctx.register(SpringMVCConfig.class);//添加DispatcherServletServletRegistration.Dynamicspringmvc=servletContext.addServlet("springmvc",newDispatcherServlet(ctx));//添加路径映射到DispatcherServletspringmvc.addMapping("/");//为DispatcherServlet添加启动时机springmvc.setLoadOnStartup(1);}}WebInit类似于web.xml,该类需要实现WebApplicationInitializer接口,并实现接口中的方法。项目启动时会自动执行onStartup方法。我们可以在这个方法中做一些项目初始化操作,比如加载SpringMVC容器,添加过滤器,添加Listener,添加Servlet等。注意:由于我们只是在WebInit中添加了SpringMVC的配置,所以项目启动时只会加载SpringMVC容器,不会加载Spring容器。如果一定要加载Spring容器,就需要修改SpringMVC的配置。在SpringMVC中配置包扫描中也会扫描@Configuration注解,然后加载Spring容器。这个问题还有一个解决方案,就是直接在项目中丢弃Spring的配置,直接把所有的配置放到SpringMVC的配置中。这是在SSM集成中完成的,没有问题。在实际开发中,经常使用第二种方案。第二种方案,SpringMVC的配置如下:@Configuration@ComponentScan(basePackages="org.javaboy")publicclassSpringMVCConfig{}This在这种方案中,所有注解都在SpringMVC中扫描。如果采用这种方案,可以删除Spring的配置文件。5在测试结束时,添加一个HelloController,并启动项目进行测试:@RestControllerpublicclassHelloController{@GetMapping("/hello")publicStringhello(){return"hello";}}启动项目,访问界面,结果如下:6其他配置6.1静态资源过滤SpringMVCXML中静态资源过滤的配置如下:在Java配置的SSM环境下,如果要配置静态资源过滤,需要让SpringMVC的配置继承WebMvcConfigurationSupport,进入并重写WebMvcConfifigurationSupport中的方法,如下:@Configuration@ComponentScan(basePackages="org.javaboy")publicclassSpringMVCConfigextendsWebMvcConfigurationSupport{@OverrideprotectedvoidaddResourceHandlers(ResourceHandlerRegistryregistry){registry.addResourceHandler("/js/**").addResourceLocations("classpath:/");}}重写addResourceHandlers方法,在该方法中配置静态资源过滤,这里我把静态资源放在resources目录下,所以资源位置是classpath:/。当然资源也可以放在webapp目录下。这时候只需要修改配置中的资源位置即可。如果使用Java配置SSM环境,一般情况下不需要使用webapp目录,除非你想使用JSP作为页面模板,否则可以忽略webapp目录。6.2ViewResolver在XML文件中,配置viewresolver如下:"/>如果使用Java类,也可以实现类似的功能。首先在我们的项目中添加一个webapp目录,在webapp目录中添加一个jsp目录,在jsp目录中添加jsp文件:然后引入JSP依赖:javax.servlet.jspjavax。servlet.jsp-api2.3.1然后,在配置类中,继续重写方法:@Configuration@ComponentScan(basePackages="org.javaboy")publicclassSpringMVCConfigextendsWebMvcConfigurationSupport{@OverrideprotectedvoidconfigureViewResolvers(ViewResolverRegistryregistry){registry.jsp("/jsp/",".jsp");}}接下来在Controller中添加一个控制器来访问JSP页面:@ControllerpublicclassHelloController2{@GetMapping("/hello2")publicStringhello(){return"hello";}}6.3路径映射有时候,我们的controller只是一个跳转,就像上一节的controller一样,里面没有业务逻辑。这种情况下不需要定义方法,直接通过路径映射实现页面访问即可。如果路径映射是用XML配置的,如下:路径/hello,然后直接返回名为hello的视图给用户,响应码为200,这个配置可以替代Controller中的方法。同样的需求,如果在Java代码中,写成如下:@Configuration@ComponentScan(basePackages="org.javaboy")setViewName("hello");}此时,当用户访问/hello3接口时,可以看到名为hello的视图文件6.4JSON配置springMVC可以接收JSON参数和返回JSON参数,这一切都依赖于HttpMessageConverter。HttpMessageConverter可以将JSON字符串转换为对象,也可以将对象转换为JSON字符串,其实它的底层还是依赖于具体的JSON库,所有的JSON库都必须提供自己的HttpMessageConverter来自动返回或接收JSON中的JSONSpringMVC,SpringMVC中默认提供了Jackson和gson的HttpMessageConverter,即:MappingJackson2HttpMessageConverter和GsonHttpMessageConverter。正因为如此,如果我们想在SpringMVC中使用JSON,只需要为jackson和gson添加依赖,添加依赖后就可以直接使用了。具体配置在AllEncompassingFormHttpMessageConverter类中完成。如果开发者使用fastjson,那么SpringMVC默认不提供fastjson的HttpMessageConverter,需要我们提供。如果是XML配置,fastjson除了添加依赖外,还需要显式配置HttpMessageConverter,如下:FastJsonHttpMessageConverter">在Java中配置好的SSM中,我们也可以添加这样的配置:@Configuration@ComponentScan(basePackages="org.javaboy")publicclassSpringMVCConfigextendsWebMvcConfigurationSupport{@OverrideprotectedvoidconfigureMessageConverters(List>ConverterPastMageson){converter=newFastJsonHttpMessageConverter();converter.setDefaultCharset(Charset.forName("UTF-8"));FastJsonConfigfastJsonConfig=newFastJsonConfig();fastJsonConfig.setCharset(Charset.forName("UTF-8"));converter.setFastJsonConfig(fastJ儿子配置);converters.add(转换器);}}然后,就可以在接口中直接返回JSON,此时的JSON数据会由fastjson生成。由于文章字数限制,知识点就不一一指出了。如果您需要,请点击此处获取