目录
3.3.2 @ConfigurationProperties
SpringBoot 提供了一种快速开发使用Spring 的方式,(以前ssm整合的时候,还要自己配置)现在SpringBoot 可以让开发人员不必再配置与逻辑业务之间进行思维的切换,全身心投入到逻辑业务编写中。从而大大的提高了开发效率,一定程度上缩短了项目周期。
了解更多SpringBoot 内容:Springboot入门到精通(超详细文档)_cuiqwei的博客-CSDN博客_springboot文档
SpringBoot 提供了一种快速开发Spring项目的方式。而不是对Spring功能上的增强。
1) 自动配置
Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是SpringBoot自动完成的。
2) 起步依赖
起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。
简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
3) 辅助功能
提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
Spring Boot : 2.5.6 版本由官方推荐
jdk: Java8
项目构建工具及版本: Maven ,版本要求是3.3及以上
1.创建一个空工程(不创建空工程也可以)
2.创建Maven项目

3.pom.xml 文件 中配置负父坐标 和 web 的起步依赖
- "1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0modelVersion>
-
- <groupId>com.itheimagroupId>
- <artifactId>study_springboot_01artifactId>
- <version>1.0version>
-
- <parent>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-parentartifactId>
- <version>2.5.6version>
- parent>
-
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-webartifactId>
- dependency>
- dependencies>
-
- project>
4.编写 SpringBoot 启动类

- @SpringBootApplication
- public class DemoApplication {
- public static void main(String[] args) {
- SpringApplication.run(DemoApplication.class,args);
- }
- }
5.编写HelloController 写前端访问路径
- @RestController
- public class HelloController {
-
- @RequestMapping("/hello")
- public String hello(String name ){
- return "hello world!!!!";
- }
- }
6.访问路径http://localhost:8080/hello测试

1.使用Spring Initializr 创建SpringBoot

2.配置项目信息

3.勾选起步依赖(根据需求)

4.创建完成后工程目录结构

5.编写Controller代码
- @RestController
- public class HelloController {
-
- @RequestMapping("/sayHello")
- public String sayHello(){
- return "hello world !!!";
- }
- }
6.访问http://localhost:8080/sayHello接口测试
application.properties或application.yml(application.yaml)(两种,yml是yaml简化)自定义配置。SpringBoot默认从Resource目录加载自定义配置文件。
有下面3个要点:
SpringBoot提供了2种配置文件类型:properteis和yml/yaml
默认配置文件名称:application
(了解)在同一级目录下优先级为:properties>yml > yaml
两种形式的不同。

YML文件格式是YAML(YAML Aint Markup Language)编写的文件格式。可以直观被电脑识别的格式。容易阅读,容易与脚本语言交互。可以支持各种编程语言(C/C++、Ruby、Python、Java、Perl、C#、PHP),扩展名为.yml或.yaml。
大小写敏感
数据值前边必须有空格,作为分隔符
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
''#" 表示注释,从这个字符一直到行尾,都会被解析器忽略。
普通数据语法:key: value
- # yaml
- personName: zhangsan
注意:
Value之前有一个空格
key不要定义为username否则返回的值将是window中的用户名称,username为特定值。
对象(map)数据:
- person:
- name: haohao
- age: 31
- addr: beijing
- #或者(了解即可)
- person: {name: haohao,age: 31,addr: beijing}
注意:yml语法中,相同缩进代表同一个级别
集合、数组数据语法:
- # 数组或集合
- city:
- - beijing
- - shanghai
- # 行内写法
- address: [beijing,shanghai]
-
- #集合中的元素是对象形式
- students:
- - name: zhangsan
- age: 18
- score: 100
- - name: lisi
- age: 28
- score: 88
- - name: wangwu
- age: 38
- score: 90
@Value注解将配置文件的值映射到Spring管理的Bean属性值
- @Value("${personName}")
- private String personName;
- // 还可以这样
- @Value("${person.name}")
- private String persionName;
- // 还可以这样
- @Value("${students[0].name}")
- private String persionName;

通过注解@ConfigurationProperties(prefix=''配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射。
- @Data
- @Component
- @ConfigurationProperties(prefix = "person")
- public class Person {
- private String name;
- private String age;
- private String addr;
- }
使用@ConfigurationProperties方式必须提供Setter方法,使用@Value注解不需要Setter方法。同时可以在pom中添加如下坐标,这样可以在配置文件中配置数据时有更加友好的提示。
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-configuration-processorartifactId>
- <optional>trueoptional>
- dependency>
1.创建SpringBoot工程: spring-boot-mybatis

2.勾选依赖坐标

3.在application.xml 中添加数据库连接信息
- spring:
- # 数据源相关配置
- datasource:
- username: root
- password: root
- driver-class-name: com.mysql.cj.jdbc.Driver
- #时区必须配置否则报错,注意数据库名切换为自己的数据库名称
- url: jdbc:mysql://127.0.0.1/itheima?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
- #mybatis 相关配置
- mybatis:
- # 指定接口映射文件的位置
- mapper-locations: classpath:mapper/*.xml
- # 为POJO类指定别名
- type-aliases-package: com.itheima.integration.pojo

pom.xml
- "1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0modelVersion>
- <groupId>com.itheimagroupId>
- <artifactId>spring-boot-mybatisartifactId>
- <version>0.0.1-SNAPSHOTversion>
- <name>spring-boot-mybatisname>
- <description>Demo project for Spring Bootdescription>
-
- <properties>
- <java.version>1.8java.version>
- <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
- <spring-boot.version>2.3.7.RELEASEspring-boot.version>
- properties>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-webartifactId>
- dependency>
- <dependency>
- <groupId>org.mybatis.spring.bootgroupId>
- <artifactId>mybatis-spring-boot-starterartifactId>
- <version>2.1.4version>
- dependency>
- <dependency>
- <groupId>org.projectlombokgroupId>
- <artifactId>lombokartifactId>
- dependency>
-
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <scope>runtimescope>
- dependency>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-testartifactId>
- <scope>testscope>
- <exclusions>
- <exclusion>
- <groupId>org.junit.vintagegroupId>
- <artifactId>junit-vintage-engineartifactId>
- exclusion>
- exclusions>
- dependency>
- dependencies>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-dependenciesartifactId>
- <version>${spring-boot.version}version>
- <type>pomtype>
- <scope>importscope>
- dependency>
- dependencies>
- dependencyManagement>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-compiler-pluginartifactId>
- <version>3.8.1version>
- <configuration>
- <source>1.8source>
- <target>1.8target>
- <encoding>UTF-8encoding>
- configuration>
- plugin>
- <plugin>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-maven-pluginartifactId>
- <version>2.3.7.RELEASEversion>
- <configuration>
- <mainClass>com.itheima.springbootmybatis.SpringBootMybatisApplicationmainClass>
- configuration>
- <executions>
- <execution>
- <id>repackageid>
- <goals>
- <goal>repackagegoal>
- goals>
- execution>
- executions>
- plugin>
- plugins>
- build>
-
- project>
我们的application.xml 配置文件
- spring:
- datasource:
- driver-class-name: com.mysql.cj.jdbc.Driver
- username: root
- password: root
- #时区必须配置否则报错,注意数据库名切换为自己的数据库名称
- url: jdbc:mysql://127.0.0.1/itheima?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
-
-
- #mybatis 相关配置
- mybatis:
- mapper-locations: classpath:mapper/*.xml
- type-aliases-package: com.itheima.springbootmybatis.pojo
- #打印日志
- logging:
- level:
- com.itheima.springbootmybatis:
- debug
UserMapper.xml 配置文件
- "1.0" encoding="UTF-8" ?>
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.itheima.springbootmybatis.dao.UserMapper">
-
-
- <select id="selectAll" resultType="User">
- select * from user;
- select>
-
- mapper>
启动类
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
-
- @SpringBootApplication
- public class SpringBootMybatisApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(SpringBootMybatisApplication.class, args);
- }
-
- }
UserService接口
- import com.itheima.springbootmybatis.pojo.User;
-
- import java.util.List;
-
- public interface UserService {
-
- // 查询所有
- List
selectAll(); - }
UserServiceImpl实现类
-
- import java.util.List;
-
- @Service
- public class UserServiceImpl implements UserService {
-
- @Autowired
- private UserMapper userMapper;
-
- @Override
- public List
selectAll() { - List
users = userMapper.selectAll(); - return users;
- }
- }
UserMapper 接口
-
- import com.itheima.springbootmybatis.pojo.User;
- import org.apache.ibatis.annotations.Mapper;
-
- import java.util.List;
- @Mapper//告知 spring 我的mapper接口在这里
- public interface UserMapper {
- // 查询所有
- List
selectAll(); - }
注意: 这里 @Mapper 告知spring mapper在这里
或者:
UserController
-
- import com.itheima.springbootmybatis.pojo.User;
- import com.itheima.springbootmybatis.service.UserService;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
-
- import java.util.List;
-
- @RestController
- @Slf4j// lombok打印日志
- public class UserController {
- @Autowired
- private UserService userService;
-
- /*
- * 查询所有
- * */
- @RequestMapping("/findAll")
- public List
findAll(){ - System.out.println("查询用户信息:");
- // log.info()
- return userService.selectAll();
- }
-
- }