| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring Boot概述 -> 正文阅读 |
|
[Java知识库]Spring Boot概述 |
问题: J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。? Spring Boot简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 解决: “Spring全家桶”时代。(整个Spring技术栈的一个大整合) Spring Boot?? J2EE一站式解决方案 Spring Cloud?? 分布式整体解决方案 优点: – 快速创建独立运行的Spring项目以及与主流框架集成 – 使用嵌入式的Servlet容器,应用无需打成WAR包 – starters自动依赖与版本控制 – 大量的自动配置,简化开发,也可修改默认值 – 无需配置XML,无代码生成,开箱即用 – 准生产环境的运行时应用监控 – 与云计算的天然集成 缺点: 入门容易,精通难? 搭建Spring Boot项目?准备环境 –jdk1.8:Spring Boot 推荐jdk1.7及以上; java version "1.8.0_201" –maven3.x:maven 3.3以上版本;Apache Maven 3.6.1 –IntelliJIDEA2017:IntelliJ IDEA 2019 x64、STS –SpringBoot 2.3.4.RELEASE:2.3.4;(SNAPSHOT快照版还在开发中、RELEASE发布版稳定版本) 1.新建Spring Boot项目 使用IDEA创建项目模块
在Module窗口中,选择左侧菜单中的“Spring Initializr”,选择Module SDK为JDK1.8,再点击“Next”按钮 ? ?点击next时可能会出现的问题 使用Maven进行项目构建,需要根据需求设置Maven坐标,设置项目的构建方式和打包方式,设置完成后单击“Next”按钮? 选择依赖的Spring Boot版本和组件。选择Spring Boot版本为2.1.5。除了选择版本之外,Spring Boot还提供了很多可供选择的组件,这里由于要搭建Web项目,选择与Web项目相关的组件。单击Next按钮 ? 设置项目名称和项目的存储位置,但是“Finish”按钮,完成一个Spring Boot项目的构建操作 ? 创建完成的Spring Boot项目的结构如图所示:
2.编写java代码 打开Spring Boot项目src/main/java目录,在此目录的包下创建controller包,并在该包中创建控制器类SayHelloController,如图: ? 3.启动并测试 现在可以启动项目进行测试了
? 项目启动完成后,打开浏览器,访问http://localhost:8080/sayHello??? ? Spring Boot项目的三个核心文件Spring Boot的三个核心文件(pom、启动类、application.properties)非常重要,这三个文件是Spring Boot能健康运行的关键 1.pom文件
?2.启动类
?@SpringBootApplication:SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类, SpringBoot就应该运行这个类的main方法来启动SpringBoot应用; @SpringBootApplication注解是一个组合注解,它是由多个注解组合而成的注解;按住Ctrl键,单击@SpringBootApplication注解,可进入源码 ?
?@SpringBootConfiguration:SpringBoot的配置类;标注在某个类上,表示这是一个SpringBoot的配置类。 可替换Spring的applicationContext.xml配置文件,被注解的类内部可以包含有一个或多个被@Bean注解标注的方法,这些方法会被Spring的系统类扫描,并用于构建Bean定义,初始化Spring容器。 @EnableAutoConfiguration:开启自动配置功能; 以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效 @ComponentScan:扫描启动类同目录及子目录下的所有注解,使这些注解生效 3.application.properties / application.yml spring-boot-starter-parent中可以识别一些特定名称的文件,其中application.properties文件是SpringBoot项目的配置文件,关于SpringBoot项目的大部分配置信息可以在此文件中进行编写。需要注意,此文件必须在项目的resources资源路径的根路径下。 ?application.properties文件application.properties文件是SpringBoot项目能自定识别的文件,而且SpringBoot的大部分配置信息可以在此文件中编写。 SpringBoot项目默认启动的端口号是8080。如何修改? 就是在application.properties文件中添加配置。server.port=8082 ? ?启动项目时,观察日志信息如图;可以发现现在的端口号已经变成8082了,说明端口号修改成功了。 除了修改端口号之外,还可以在application.properties文件中修改项目的访问路径和一些与日志相关的简单配置。
?application.yml文件在Spring Boot项目中,除了使用application.properties文件进行配置以外,还可以使用application.yml文件。 application.yml属于YAML类型的文件,可以更直观地配置项目信息。如图: ?YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。 以前的配置文件;大多都使用的是 xxxx.xml文件; YAML:以数据为中心,比json、xml等更适合做配置文件; YAML:配置例子 server: port: 8081 ?XML: <server> <port>8081</port> </server> YAML语法? – 使用缩进表示层级关系 – 缩进时不允许使用Tab键,只允许使用空格。 – 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 – 大小写敏感 ?
Spring Boot的Web项目的启动方式 Web项目一般需要部署到Web容器中运行,Spring Boot项目也不例外。但是上述的案例启动并没有进行部署,直接通过运行启动类就将项目启动了。原因是:Spring Boot项目自动完成了部署,部署到了Tomcat中。 ? ? Spring Boot项目中会内置Web容器,默认的内置Web容器是Tomcat,当然也可以通过修改pom.xml文件来替换它的内置Web容器。 Spring Boot支持3中内置容器:Tomcat、Jetty和Undertow。 下面以Jetty为例,如何将默认的内置容器Tomcat修改为Jetty 第一步:修改pom.xml文件,添加如下的配置,此配置的作用是禁用当前的Tomcat容器
?第二步:添加与Web容器Jetty相关的依赖
?第三步:启动项目查看启动日志 ? ?如何将默认的内置容器Tomcat修改为Undertow ?
SpringBoot项目除了使用内置的Web容器启动外,还有其他多种启动方式:? 第一种:在本地Web容器中启动 通过Maven将项目打包成war文件,将war文件拷贝至本地Web容器中部署运行 1.首先打开pom文件,将原有的jar(默认为jar)修改为war ? 2.然后将启动类继承SpringBootServletInitializer,重写configure方法 ? ?3.然后去运行【package】进行打包 ?4.然后把target目录下的war包放到tomcat的webapps目录下,启动tomcat,即可自动解压部署。最后在浏览器中输入http://localhost:[端口号]/[打包项目名]/ 第二种:使用Maven启动项目 进入项目根路径,执行 mvn spring-boot:run 命令 使用命令行的形式/DOS窗口
?使用IEDA的Terminal
? ?第三种:使用Java命令启动项目 通过Maven将项目打包成jar文件,进入jar文件所在目录,使用 java -jar 命令运行jar文件 java -jar 生成jar的文件名.jar 使用命令行的形式/DOS窗口 ? ?使用IEDA的Terminal ? Maven的多模块项目?? 问题:复杂、庞大的企业级项目,开发和部署过程存在多种问题 结构不够清晰,开发人员不易定位自己负责的模块 项目庞大导致启动费时 部署时无法按模块需要分配资源,造成资源的浪费 解决方案:Maven提出多模块项目的方案 将一个大项目拆分成多个小的模块项目 拆分后的模块项目任务明确,耦合度低,方便管理和维护 演示案例 第一步:创建Maven父模块 1.左侧面板选择maven(不要选择Create from archetype选项),如下图,点击Next即可 2.依次补全如下信息,点击Next 3.输入项目名字。如ch02_parent,我们主要是在这个项目下创建我们的子模块 ? ?4.这样我们就创建好了一个普通项目,因为该项目是作为一个Parent project存在的,不需要编写任何代码,可以直接删除src文件夹 ?第二步:创建子模块,通常按职责划分子模块 beans:存放实体类 common:存放工具类、枚举类等项目中的核心类 dao:存放数据访问层代码 service:存放业务层代码 controller:存放控制器层代码 1.在父模块上右键如下图操作,创建一个模块,该模块即为子模块 ? ?2.同样不选择Create from archetype选项,因为是普通模块,Next ?3.groupId和version继承自Parent project,这里只用ArtifactId,Next ? ?4.填写模块名称 ?5.创建完成后结构如下图 ?6.按照同样的方式创建,依次创建common、dao、service模块项目 7.创建controller模块的方式有所区别 ? ? ? 7.1-使用maven-archetype-webapp创建一个Web项目 ? ? ? 7.2-groupId和version继承自Parent project,这里只用ArtifactId,Next ? ? ? ?7.3-设置maven项目的属性 ? ? ?7.4-填写模块名称 第三步:配置模块之间的依赖 Maven的依赖有两个特点:继承和传递 继承:即当B项目依赖A项目时,B项目可继承A项目引入的全部依赖。除了这种情形外,在多模块项目中,子模块和父模块之间也存在继承关系,这类似于java中的继承关系,即子模块会继承父项目中的全部依赖。 传递:即当B项目依赖A项目,C项目依赖B项目时,C项目除了可以继承B项目引入的依赖之外,还会继承A项目引入的依赖。 ? ?在多模块项目中,子模块继承父项目,所以可以在父项目中统一管理通用的依赖,比如Log4j、Junit这种每个项目都会用到的依赖。又由于Maven的依赖是传递的,所以子模块之间可以直接线性依赖,即controller依赖service,service依赖dao,dao依赖common,common依赖beans,这样controller中需要调用beans中的实体类时,也可以顺利调用。模块依赖关系如图: ?问题: 对于只是部分子模块会用到的依赖,不会放到父项目中 而由子模块分别引入某个依赖,可能产生版本不一致的问题 解决方案: 在父项目的pom文件中使用<dependencyManagement>标签管理依赖的版本号 ?
? ?在父项目中添加了上面的示例代码后。 子模块中引入commons-logging依赖不需要指定版本号,版本号都是1.1.1。 子模块不需要commons-logging依赖的,则不会引入commons-logging依赖。这样就避免了版本冲突的问题。 ? ? 此时,如果对父项目进行Maven的操作,子模块也会进行同样的操作。即当对父项目打包时,所有的子项目都会打包。这种通过父项目来操作子项目进行Maven操作的情形,就叫聚合。 注意:使用聚合时,父项目的pom文件中packaging都是pom。 使用Spring Initializr创建的Spring Boot项目也是Maven项目;可以使用Spring Initializr创建多模块项目,此时的每个模块都是Spring Boot项目\
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 12:37:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |