三门峡网站开发,建材招商网,友情链接权重高的网站,唐山公司网站制作SpringBoot入门篇前言在普通的java项目中#xff0c;大量的xml文件配置起来相当繁琐#xff0c;导致了开发效率非常低下#xff0c;整合第三方框架的配置可能会存在冲突问题导致部署效率低#xff0c;打包方式是将项目打成一个war包放入到tomactwebapps目录下执行。简单来说…  SpringBoot入门篇前言 在普通的java项目中大量的xml文件配置起来相当繁琐导致了开发效率非常低下整合第三方框架的配置可能会存在冲突问题导致部署效率低打包方式是将项目打成一个war包放入到tomactwebapps目录下执行。简单来说传统的开发方式有以下令人苦恼的的特点笨重的开发繁琐的配置低下的开发效率复杂的部署流程集成第三方难度大为了解决以上问题SpringBoot被提出来了它设计的目的就是为了简化Spring应用的初始搭建及开发过程其约定大于配置去繁从简。看到这里你觉得我是在吹牛逼SpringBoot真的有那么优秀么如果你还是不信咱们去官网的开发文档瞅一瞅打开SpringBoot官网打开文档让我们一探究竟。文档里有这样一段话介绍SpringBoot框架的特点因为全是英文我直接精炼下给你看SpringBoot的优点总结如下快速整合第三方框架(Maven依赖关系Maven继承)打包方式完全采用注解采用注解方式启动SpringMVC,SpringBoot Web组件集成SpringMVC框架简化xml配置内置嵌入Http服务器(默认为Tomcat、Jetty)降低了对环境的要求最终以java应用程序进行执行(SpringBoot项目中没有Web.xml),运行中应用状态的监控。Starters自动依赖于版本控制工欲善其事必先利其器既然SpringBoot有那么多优点我们肯定是要好好学的。在学习SpringBoot之前需要搭建SpringBoot工程那么问题来了正在看文章的你知道怎么搭建SpringBoot工程么它有几种方式呢这些方式各自有什么特点及联系工程是如何启动的呢文章目录1、SpringBoot创建的三种方式2、程序是如何执行的3、目录结构方式一:网上在线创建这种方式是在网上在线创建然后可以导出压缩包解压后的文件就是一个SpringBoot工程文件。访问https://start.spring.io/打开后就是一个创建工程页面Project选择创建工程的方式可以使用Maven或者Cradle这里我们采用Maven方式创建Language开发语言的选择我们选择的JavaSpringBoot: SpringBoot的版本选择的是2.3.3Project Metadata: 项目信息Group 和 Artifact 项目坐标Name项目名称Description对工程的描述Package name: 项目内的包名称Packaging打包方式我们这里的选择的是jar包Java: Java语言的版本这里选择是11Dependencies添加依赖这里我们仅仅添加Spring Web它包含了Spring、SpringMVC一整套东西每个选项都选择好就可以直接生成一个工程文件压缩包了我们只需要使用开发工具(Intellij IDEA)打开即可。方式二使用IDEA的spring Initializer方式二是在IDEA使用Spring Initializer直接创建可以看出,Spring Initializer与方式一相同默认采用https://start.spring.io创建同方式一相同填写坐标、语言、项目名称、项目描述和加载依赖等信息。NOTE方式一和方式二创建工程时都需要联网本质上都是在https://start.spring.io网址上完成的一旦网址加载速度慢或者打不开。因为SpringBoot工程本质上就是一个Maven工程我们可以在Maven工程的基础上改造为SpringBoot工程方式三改造Maven工程创建SpringBoot我们首先创建一个Maven工程填写坐标确定项目名称在pom文件中加入以下信息parent        groupIdorg.springframework.bootgroupId        artifactIdspring-boot-starter-parentartifactId        version2.3.3.RELEASEversion    parent  dependencies              dependency            groupIdorg.springframework.bootgroupId            artifactIdspring-boot-starter-webartifactId        dependency    dependencies   添加启动类EnableAutoConfigurationpublic class Demo3Application {        public static void main(String[] args) {            SpringApplication.run(Demo3Application.class, args);        }    }深入理解程序的执行1、Pom文件1、父项目父项目parent        groupIdorg.springframework.bootgroupId        artifactIdspring-boot-starter-parentartifactId        version2.3.3.RELEASEversion    parentspring-boot-starter-parent的父项目是parent    groupIdorg.springframework.bootgroupId    artifactIdspring-boot-dependenciesartifactId    version2.3.3.RELEASEversion    relativePath../../spring-boot-dependenciesrelativePath  parentspring-boot-dependencies管理了SpingBoot应用中的所有依赖,它是SpringBoot的版本仲裁中心以后我们导入依赖时默认是不需要写版本的(没有在dependencies里面管理的依赖自然需要声明版本号) 。2、启动器 dependencies        dependency            groupIdorg.springframework.bootgroupId            artifactIdspring-boot-starter-webartifactId        dependency    dependenciesspring-boot-starter: 是SpringBoot的场景启动器spring-boot-starter-web帮我们导入了web模块正常运行所依赖的组件深入spring-boot-starter-web的底层我们可以看到它集成常用web模块dependencies    dependency      groupIdorg.springframework.bootgroupId      artifactIdspring-boot-starterartifactId      version2.3.3.RELEASEversion      scopecompilescope    dependency    dependency      groupIdorg.springframework.bootgroupId      artifactIdspring-boot-starter-jsonartifactId      version2.3.3.RELEASEversion      scopecompilescope    dependency    dependency      groupIdorg.springframework.bootgroupId      artifactIdspring-boot-starter-tomcatartifactId      version2.3.3.RELEASEversion      scopecompilescope    dependency    dependency      groupIdorg.springframeworkgroupId      artifactIdspring-webartifactId      version5.2.8.RELEASEversion      scopecompilescope    dependency    dependency      groupIdorg.springframeworkgroupId      artifactIdspring-webmvcartifactId      version5.2.8.RELEASEversion      scopecompilescope    dependency  dependenciesNOTE:Spring Boot将所有的功能场景都抽取出来做成一个个的starters(启动器)只需要在项目里面引入这些starter 相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器。2、主程序类(入口类)SpringBootApplication//SpringBootApplication 来标注一个主程序类说明这是一个SpringBoot应用public class demo1 {    public static void main(String[] args) {  //让Spring应用启动起来        SpringApplication.run(demo1.class,args);    }}SpringBootApplication标注在某个类上说明这个类是SpringBoot的主配置类SpringBoot 就应该运行这个类的main方法来启动SpringBoot应用打开SpringBootApplication的底层发现它是一个组合注解Target({ElementType.TYPE})Retention(RetentionPolicy.RUNTIME)DocumentedInheritedSpringBootConfigurationEnableAutoConfiguration//包扫描扫描的是与启动类同一层的包及其子包ComponentScan(    excludeFilters  {Filter(    type  FilterType.CUSTOM,    classes  {TypeExcludeFilter.class}), Filter(    type  FilterType.CUSTOM,    classes  {AutoConfigurationExcludeFilter.class})})public interface SpringBootApplication {SpringBootConfiguration表明是SpringBoot的配置类打开SpringBootConfiguration底层Target({ElementType.TYPE})Retention(RetentionPolicy.RUNTIME)DocumentedConfigurationpublic interface SpringBootConfiguration {Configuration表明是一个配置类配置类的作用等同于配置文件EnableAutoConfigurationEnableAutoConfiguration告诉SpringBoot开启自动配置功能这样自动配置才能生效。打开EnableAutoConfigurationAutoConfigurationPackageImport({AutoConfigurationImportSelector.class})public interface EnableAutoConfiguration {AutoConfigurationPackage自动配置包Import({Registrar.class})将主配置类(SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器Import(AutoConfigurationPackages.Registrar.class)给容器导入组件EnableAutoConfigurationImportSelector导入哪些组件的选择器将所有需要导入的组件以全类名的方式返回这些组件就会被添加到容器会给容器中导入非常多的自动配置类(xxxAutoConfiguration)就是给容器中导入这个场景需要的所有组件 并配置好这些组件。3、resources文件夹下的目录结构static保存所有的静态资源js css  imagestemplates保存所有的模板页面(Spring Boot默认jar包使用嵌入式的Tomcat默认不支持JSP页 面)可以使用模板引擎(freemarker、thymeleaf)application.propertiesSpring Boot应用的配置文件可以修改一些默认设置关注公众号让我们每天进步一点