IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java SpringBoot V -> 正文阅读

[Java知识库]Java SpringBoot V

Java SpringBoot V

1. 关于Spring Boot

Spring Boot是Spring官方的一个产品,其本质上是一个基于Maven的、以Spring框架作为基础的进阶框架,很好的支持了主流的其它框架,并默认完成了许多的配置,其核心思想是“约定大于配置”。

2. 创建Spring Boot工程

在IntelliJ IDEA中,在创建向导中选择Spring Initializer即可开始创建Spring Boot工程,在创建向导的界面中,需要关注的部分有:

  • Group Id
  • Artifact Id

以上2个值会共同构成一个Package name,如果Artifact Id的名字中有减号,在Package name中会去除,推荐手动添加小数点进行分隔。

由于Spring Boot官方更新版本的频率非常高,在创建项目时,随便选取某个版本均可,当项目创建成功后,推荐打开pom.xml,将<parent>中的<version>(即Spring Boot父项目的版本)改成熟悉的版本,例如:2.5.9

在创建过程中,还可以在创建向导的界面中勾选所需要依赖项,如果创建时没有勾选,也可以在创建工程之后手动在pom.xml中添加。

3. Spring Boot工程的结构

由于Spring Boot工程本质上就是一个Maven工程,所以,目录结构基本上没有区别。

与普通Maven工程最大的不同在于:Spring Boot工程在src\main\javasrc\test\java下默认已经存在Package,是创建项目时指定的Package,**需要注意:此Package已经被配置为Spring执行组件扫描的根包,所以,在编写代码时,所有的组件类都必须放在此包或其子孙包中!**通常,推荐将所有的类(及接口)都创建在此包及其子孙包下。

src\main\java下的根包下,默认就已经存在某个类,其类名是创建项目时指定的Artifact与Application单词的组合,例如BootDemoApplication,此类中有main()方法,执行此类的main()就会启动整个项目,如果当前项目是Web项目,还会自动将项目部署到Web服务器并启动服务器,所以,此类通常也称之为“启动类”。

在启动类上,默认添加了@SpringBootApplication注解,此注解的元注解中包含@SpringBootConfiguration,而@SpringBootConfiguration的元注解中包含@Configuration,所以,启动类本身也是配置类!所以,允许将@Bean方法写在此类中,或者某些与配置相关的注解也可以添加在此类上!

src\test\java下的根包下,默认就已经存在某个类,其类名是在启动类的名称基础上添加了Tests单词的组合,例如BootDemoApplicationTests,此类默认没有添加public权限,甚至其内部的默认的测试方法也是默认权限的,此测试类上添加了@SpringBootTest注解,其元注解中包含@ExtendWith(SpringExtension.class),与使用spring-test时的@SpringJUnitTest注解中的元注解相同,所以,@SpringBootTest注解也会使得当前测试类在执行测试方法之前是加载了Spring环境的,在实际编写测试时,可以通过自动装配得到任何已存在于Spring容器中的对象,在各测试方法中只需要关注被测试的目标即可。

pom.xml中,默认已经添加了spring-boot-starterspring-boot-starter-test依赖,分别是Spring Boot的基础依赖基于Spring Boot的测试的依赖

另外,如果在创建工程时,勾选依赖项时选中了Web项,在src\main\resources下默认就已经创建了statictemplates文件夹,如果没有勾选Web则没有这2个文件夹,可以后续自行补充创建。

src\main\resources文件夹下,默认就已经存在application.properties文件,用于编写配置,Spring Boot会自动读取此文件(利用@PropertySource注解)。

小结:

  • 创建项目后默认的Package不要修改,避免出错
  • 在编码过程中,自行创建的所有类、接口均放在默认的Package或其子孙包中
  • src\main\java下默认已存在XxxApplication是启动类,执行此类中的main()方法就会启动整个项目
  • 启动类本身也是配置类
  • 配置都应该编写到src\main\resources下的application.properties中,Spring Boot会自动读取
  • 测试类也必须放在src\test\java下的默认Package或其子孙包中
  • 在测试类上添加@SpringBootTest注解,则其中的测试方法执行之前会自动加载Spring环境及当前项目的配置,可以在测试类中使用自动装配

4. 在Spring Boot工程中使用Mybatis

需要添加相关依赖项:

  • mysql-connector-java
  • mybatis-spring-boot-starter

其依赖的代码为:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

说明:在Spring Boot工程,许多依赖项都是不需要显式的指定版本号的,因为在父项目中已经对这些依赖项的版本进行了管理(配置版本号),如果一定需要使用特定的版本,也可以自行添加<version>节点进行配置

说明:在依赖项的源代码中,当<scope>的值为runtime时,表示此依赖项是运行过程中需要的,但是,在编译时并不需要参与编译

需要注意:当添加了以上数据库编程的依赖后,如果启动项目,将失败!

因为添加了数据库编程的依赖项后,Spring Boot就会尝试自动装配数据源(DataSource)等对象,装配时所需的连接数据库的配置信息(例如URL、登录数据库的用户名和密码)应该是配置在application.properties中的,但是,如果尚未配置,就会导致失败!

关于连接数据库的配置信息,Spring Boot要求对应的属性名是:

# 连接数据库的URL
spring.datasource.url=???
# 登录数据库的用户名
spring.datasource.username=???
# 登录数据库的密码
spring.datasource.password=???

在配置时,也必须使用以上属性名进行配置,则Spring Boot会自动读取这些属性对应的值,用于创建数据源对象!

例如,配置为:

# 连接数据库的URL
spring.datasource.url=jdbc:mysql://localhost:3306/mall_ams?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
# 登录数据库的用户名
spring.datasource.username=root
# 登录数据库的密码
spring.datasource.password=1234

由于Spring Boot在启动时只是加载以上配置,并不会实际的连接到数据库,所以,当以上配置存在时,启动就不会报错,但是,无法检验以上配置的值是否正确!

可以在测试类中添加测试方法,尝试连接数据库,以检验以上配置值是否正确:

@SpringBootTest
class BootDemoApplicationTests {

    @Autowired
    DataSource dataSource;

    @Test
    void testGetConnection() throws Exception {
        System.out.println(dataSource.getConnection());
    }

}

如果以上测试通过,则表示配置值无误,可以正确连接到数据库,如果测试失败,则表示配置值错误,需检查配置值及本地环境(例如MySQL是否启动、是否已创建对应的数据库等)。

5. 关于Profile配置

在Spring Boot中,对Profile配置有很好的支持,开发人员可以在src\main\resources下创建更多的配置文件,这些配置文件的名称应该是application-???.properties(其中的???是某个名称,是自定义的)。

例如:

  • 仅在开发环境中使用的配置值可以写在application-dev.properties
  • 仅在测试环境中使用的配置值可以写在application-test.properties
  • 仅在生产环境(项目上线的环境)中使用的配置值可以写在application-prod.properties

当把配置写在以上这类文件后,Spring Boot默认并不会应用以上这些文件中的配置,当需要应用某个配置时,需要在application.properties中激活某个Profile配置,例如:

# 激活Profile配置
spring.profiles.active=dev

提示:以上配置值中的dev是需要激活的配置文件的文件名后缀,当配置为dev时,就会激活application-dev.properties,同理,如果以上配置值为test,就会激活application-test.properties

6. 关于YAML配置

Spring Boot也支持使用YAML配置,在开发实践中,YAML的配置也使用得比较多。

YAML配置就是把原有的.properties配置的扩展改为yml

YAML配置原本并不是Spring系列框架内置的配置语法,如果在项目中需要使用这种语法进行配置,解析这类文件需要添加相关依赖,在Spring Boot中默认已添加此依赖。

在YAML配置中,原本在.properties的配置表现为使用多个小数点分隔的配置将改为换行使用2个空格缩进的语法,换行前的部分使用冒号表示结束,最后的属性名与值之间使用冒号和1个空格进行分隔,如果有多条属性在.properties文件中属性名有重复的前缀,在yml中不必也不能重复写。

例如,原本在.properties中配置为:

spring.datasource.username=root
spring.datasource.password=123456

则在yml文件中配置为:

spring:
  datasource:
    username: root
    password: 123456

提示:在IntelliJ IDEA中编写yml时,当需要缩进2个空格时,仍可以使用键盘上的TAB键进行缩进,IntelliJ IDEA会自动将其转换为2个空格。

无论是.properties还是yml,只是配置文件的扩展名和文件内部的配置语法有区别,对于Spring Boot最终的执行其实没有任何表现上的不同。

我是将军;我一直都在,。!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:42:44  更:2022-09-24 20:43:17 
 
开发: 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 9:31:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码