首页
碎碎念
东邻西舍
本站信息
前来吐槽
统计
Search
1
openwrt系统上安装第三方插件
27,291 阅读
2
ubuntu下zerotier的基本使用教程
14,544 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
13,424 阅读
4
openwrt使用第一步:设置上网拨号
11,298 阅读
5
openwrt无线中继功能:实现不插网线就能上网
10,073 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
Java
建站
踩坑实录
Ubuntu
折腾搞机
MySQL
MyBatis
CSS
HTML
Spring
SQL
Nginx
OpenWrt
树莓派
路由器
Maven
SSL
Git
Windows
知识分子没文化
累计撰写
85
篇文章
累计收到
155
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
统计
搜索到
1
篇与
的结果
2021-12-20
Spring Boot学习笔记
目录 一、Spring Boot简介 二、Spring Boot的主要特性 2.1、自动配置 2.2、起步依赖(Starters) 2.3、简化配置 2.4、内置服务器 2.5、无代码生成与 XML 配置 三、Spring Boot的配置 3.1、配置文件类型 3.1.1、application.properties 3.1.2、application.yaml(或.yml) 3.2、配置优先级 3.2.1、配置文件位置的优先级 3.2.2、配置文件格式的优先级 3.3、读取配置文件的方式 3.3.1、使用@Value注解 3.3.2、使用Environment对象 3.3.3、将部分配置封装成实体类 3.4、多环境开发时配置文件的切换 3.5、yml配置文件示例 四、整合MyBatis 4.1、添加起步依赖 4.2、添加配置 4.3、扫描Mapper接口 五、使用Maven打包Spring Boot项目 一、Spring Boot简介 Spring Boot 是 Spring 框架的一个扩展,旨在简化 Spring 应用的初始搭建和开发过程。它通过自动配置和约定优于配置的原则,提供一个开箱即用的应用程序架构,能够快速构建独立运行的 Spring 应用,开发者基于 Spring Boot 的预置结构继续开发,省时省力。 Spring Boot 官方文档:https://docs.spring.io/spring-boot/index.html Spring 中文网翻译的 Spring Boot 中文文档:https://springdoc.cn/spring-boot 通过 IDEA 创建 Spring Boot 项目: 添加核心依赖 Spring Web: 除了用 IDEA 创建 Spring Boot 项目,也可以直接访问 Spring Boot 项目生成网站,设定项目的元数据(如项目类型、语言、Spring Boot 版本等)之后,创建好的项目就会以压缩包的格式下载到本地,解压导入到开发工具即可。 Spring Boot 项目生成网站: https://start.spring.io/:Spring Boot 官方的项目生成工具,Java 版本和 Spring Boot 版本都比较新,国内有可能访问不了或访问速度比较慢 https://start.springboot.io/:官方项目生成工具的国内镜像,Java 版本和 Spring Boot 版本与官网一致,国内都能访问 https://start.aliyun.com/:从域名能看出来是阿里云镜像,国内都能访问,而且能用旧的 Java 版本和 Spring Boot 版本生成项目 一个典型的 Spring Boot 项目结构如下: SpringBoot-project/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── MyApplication.java │ │ └── resources/ │ │ ├── application.properties │ │ └── static/ │ │ └── templates/ │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── MyApplicationTests.java ├── pom.xml └── README.md MyApplication.java:Spring Boot 应用的主类,使用 @SpringBootApplication 注解标记。 application.properties:Spring Boot 应用的配置文件,可以配置各种属性。 static/:存放静态资源文件,例如 HTML、CSS、JavaScript 文件等。 templates/:存放模板文件,例如 Thymeleaf、Freemarker 等。 二、Spring Boot的主要特性 2.1、自动配置 开发者无需手动配置大量 XML 或注解,Spring Boot 能够根据项目中添加的依赖,自动为应用程序生成合理的默认配置,减少手动配置。例如,在项目中添加了 spring-boot-starter-web 依赖,Spring Boot 会自动配置嵌入式的 Tomcat 服务器,并为 Spring MVC 设置好必要的组件,如 DispatcherServlet 等,无需开发者手动编写大量的配置代码。 2.2、起步依赖(Starters) 起步依赖是指对常用库和框架的依赖声明的集合,使用起步依赖可以一次性地添加相关的依赖和配置到项目中,大大简化了项目的依赖管理,减少因依赖冲突而导致的问题。 比如,spring-boot-starter-data-jpa 包含了使用 Spring Data JPA 进行数据库操作所需的所有依赖,包括 Hibernate、Spring Data JPA 和数据库连接池等。 2.3、简化配置 Spring Boot 使用 application.properties 或 application.yml 作为统一的配置文件,将应用程序的各种配置集中管理,并且提供默认配置,尽量减少开发者的手动配置。这些配置文件放置在项目的类路径下,Spring Boot 会自动加载并应用其中的配置。 并且 Spring Boot 支持多环境配置,允许开发者根据不同的运行环境(如开发、测试、生产)使用不同的配置文件。通过在配置文件名中使用 {profile} 占位符,如 application-dev.yml、application-prod.yml,并在 application.yml 中指定 spring.profiles.active 属性来激活相应的环境配置。 2.4、内置服务器 Spring Boot 支持嵌入式的服务器,如 Tomcat、Jetty 和 Undertow 等,开发者可以将应用程序打包成一个可执行的 JAR 文件,使用 java -jar 命令可启动服务,无需单独部署到外部的应用服务器上。 例如,在开发 Web 应用时,只需在 pom.xml 文件中添加 spring-boot-starter-web 依赖,Spring Boot 会自动配置并启动一个嵌入式的 Tomcat 服务器,让开发者可以快速进行开发和测试。 2.5、无代码生成与 XML 配置 Spring Boot 无需代码生成和 XML 配置,完全基于注解和 Java 配置。 三、Spring Boot的配置 3.1、配置文件类型 Spring Boot 支持两种主要的配置文件类型:application.properties 和 application.yaml(.yml)。 3.1.1、application.properties 这是传统的 Java 配置文件格式,每行定义一个属性,采用 key=value 的形式。例如: server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/spring_db spring.datasource.username=root spring.datasource.password=password 3.1.2、application.yaml(或.yml) YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,它的特点包括: 使用缩进(空格数不限)表示层级关系(必须用空格缩进,不能使用 Tab) 使用 key: value 的形式表示键值对 支持列表、嵌套结构等复杂数据类型 例如: server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: password 关于 .yaml 和 .yml 的区别: 在 Spring Boot 项目中,YAML 文件通常以 .yaml 或 .yml 作为文件扩展名。 这两种扩展名本质上是相同的,它们都表示 YAML 格式的文件。.yaml 是 YAML 文件的官方推荐扩展名,而 .yml 是 .yaml 的简写形式。在功能上两者完全等价,Spring Boot 对它们的解析方式没有任何区别,无论使用 .yaml 还是 .yml,Spring Boot 都能正确加载和解析配置文件。 如果同时存在 application.yaml 和 application.yml,Spring Boot 会优先加载 application.yml。 3.2、配置优先级 3.2.1、配置文件位置的优先级 优先级最高的配置是命令行参数,通过命令行传递的这个参数将会覆盖原配置: java -jar app.jar --server.port=9999 不同位置配置文件的优先级分别为: 项目根目录下的 /config 子目录中的配置文件 项目根目录中的配置文件 类路径下的 /config 包中的配置文件 类路径根目录中的配置文件 3.2.2、配置文件格式的优先级 如果在同一个目录下同时存在 application.properties、application.yml、application.yaml 这几个文件,那么 Spring Boot 对配置文件的加载优先级为: application.properties > application.yml > application.yaml 3.3、读取配置文件的方式 假设在 YAML 配置文件中存在如下配置: server: port: 8081 spring: datasource: url: jdbc:mysql://localhost:3306/spring_db?useSSL=false&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver userInfo: name: 张三 age: 30 likes: - 游戏 - 健身 - 读书 3.3.1、使用@Value注解 @Value 注解可以直接将配置文件中的单个属性值注入到类的字段中。 @Component public class ConfiurationBean { // 简单属性 @Value("${spring.datasource.url}") private String url; // 数组 @Value("${userInfo.likes}") private String[] likes; // 数组里的其中一个属性 @Value("${userInfo.likes[1]}") private String like; // ... } 3.3.2、使用Environment对象 在 Spring Boot 中,Environment(org.springframework.core.env.Environment)是一个用于管理应用程序运行时环境配置信息的接口,它可以使开发者方便地获取和使用项目的配置参数,无论是来自 application.properties、application.yml 文件,还是系统环境变量、命令行参数等。 在需要使用 Environment 对象的类中,可以使用 @Autowired 注解将 Environment 对象自动注入进来,然后在类的方法中使用 getProperty() 方法获取配置信息。 @Component public class ConfiurationBean { @Autowired private Environment env; public void printProperty() { // 获取并使用属性 String port = env.getProperty("server.port"); System.out.println(port); } } 3.3.3、将部分配置封装成实体类 创建一个 Java 实体类,属性与配置项一一对应,使用 @ConfigurationProperties 注解将配置文件中的属性绑定到该 Java 对象上: @Component @ConfigurationProperties(prefix = "userInfo") public class UserInfo() { private String name; private int age; private String[] likes; // get方法、set方法、构造方法 } 3.4、多环境开发时配置文件的切换 在项目的开发中,常常需要在多个环境(开发环境 dev、生产环境 prod 等)部署项目,并且每个环境的配置可能都不太一样(如日志等级、数据库属性等),因此每个环境都有单独的一个配置文件。 Spring Boot 支持根据不同的环境加载不同的配置文件,常用的做法是建一个公共配置文件 application.properties 或 application.yml 来存放每个环境中相同的配置,再给每一个环境建一个单独的配置文件存放个性化配置,该配置文件的命名规则为 application-{profile}.properties 或 application-{profile}.yml。 例如开发环境的配置文件为 application-dev.yml,生产环境的配置文件为 application-prod.yml,则在公共配置文件 application.yml 中激活指定配置文件的方式为: spring: profiles: active: dev 也可以在启动项目 JAR 文件时通过命令行参数 spring.profiles.active 指定: java -jar app.jar --spring.profiles.active=dev 如果既在公共配置文件 application.yml/application.properties 中指定了激活哪个配置文件,又通过命令行参数指定,则最后生效的是命令行参数,因为命令行参数的优先级最高。 在 IDEA 中也可以直接指定命令行参数: 新版本 IDEA: 3.5、yml配置文件示例 server: port: 8081 spring: datasource: url: jdbc:mysql://127.0.0.1:3306/spring_db?useSSL=false&setUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver # 数据源用druid type: com.alibaba.druid.pool.DruidDataSource # MyBatis配置 mybatis: # 指定Mapper XML文件的位置 mapper-locations: classpath:mapper/*.xml # 实体类的包路径 type-aliases-package: com.example.demos.web configuration: # 开启驼峰命名映射 map-underscore-to-camel-case: true # 项目日志等级 logging: level: # 全局日志等级 root: info # 设置MyBatis的日志级别为DEBUG com.example.mapper: debug org.mybatis: debug org.apache.ibatis: debug # 自定义配置 四、整合MyBatis 4.1、添加起步依赖 新版 IDEA 中可以直接在 pom.xml 文件的 <dependencies> 标签旁边点击 “Add Starters” 添加 MyBatis 与 MySql 的起步依赖: 或者手动在 pom.xml 文件中添加 MyBatis 的起步依赖与 MySQL、Druid 的依赖坐标: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.22</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> 4.2、添加配置 然后在配置文件中添加数据源与 MyBatis 配置: spring: datasource: url: jdbc:mysql://127.0.0.1:3306/spring_db?useSSL=false&setUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver # 使用druid数据源 type: com.alibaba.druid.pool.DruidDataSource # MyBatis配置 mybatis: # 指定Mapper XML文件的位置 mapper-locations: classpath:mapper/*.xml # 实体类的包路径 type-aliases-package: com.example.demos.web # 指定MyBatis的全局配置文件位置,可以进行更细颗粒度的MyBatis配置,不需要就不写 # config-location: classpath:mybatis-config.xml configuration: # 开启驼峰命名映射 map-underscore-to-camel-case: true # 项目日志等级 logging: level: # 全局日志等级 root: info # 设置MyBatis的日志级别为DEBUG com.example.mapper: debug org.mybatis: debug org.apache.ibatis: debug 4.3、扫描Mapper接口 最后在写接口的时候在上面用 @Mapper 注解标记一下这是 MyBatis 的 Mapper 接口: @Mapper public interface UserMapper { User select(); // ... } 或者直接在 Spring Boot 启动类上面用注解 @MapperScan() 进行全局配置扫描,指定 Mapper 接口类的包路径,Spring 会自动扫描该包下的所有接口,并将其注册为 MyBatis 的 Mapper 接口,无需在每个接口上都添加 @Mapper 注解。 @SpringBootApplication @MapperScan("com.example.mapper") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } 至此,Spring Boot 框架整合 MyBatis 框架完成。 五、使用Maven打包Spring Boot项目 在 pom.xml 文件中,确保配置了 Spring Boot Maven 插件: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.6.3</version> <configuration> <!-- 指定启动程序主类 --> <mainClass>com.example.demo.DemoApplication</mainClass> <skip>false</skip> </configuration> </plugin> </plugins> </build> 在项目根目录下运行打包的命令: # 其实是两条命令,mvn clean是清除项目target目录下的文件,mvn package打包命令,两个命令一起执行。 # -Dmaven.test.skip=true表示排除测试代码之后打包 mvn clean package -Dmaven.test.skip=true 或者在 IDEA 中依次操作 clean 与 package: 打包时,一般都要先进行 clean 操作清理项目之前构建过程中生成的临时文件和输出文件,使项目恢复到初始状态,目的是确保项目不会受到之前构建结果的影响,避免旧的文件干扰新的构建过程。 打包完成后,会生成两个 JAR 文件,其中一个后缀为 .original,只包含工程中的 Class,不包含依赖;另一个后缀为 .jar 的文件是 SpringBoot 打包插件创建的,包含了应用依赖和 Spring Boot 相关的 Class,可以直接运行。生成的 JAR 文件保存在 target 目录下,文件名为 {项目名称}-{版本号}.jar。例如:demo-0.0.1-SNAPSHOT.jar 使用以下命令运行打包好的 JAR 文件: java -jar demo-0.0.1-SNAPSHOT.jar 并且可以通过命令来指定部分参数: java -jar demo-0.0.1-SNAPSHOT.jar --server.port=9999 --spring.profiles.active=prod
2021年12月20日
2,091 阅读
0 评论
2 点赞