实现功能
通过controller层使自己创建的实体类user获取properties中配置的相应的数据并打印
目录结构
Application结尾的java文件为springboot项目的启动入口,必须放到项目文件夹根目录中,否则报错

pom.xml依赖导入和基本配置
创建的springboot项目中初始只勾选了web配置。
热部署的依赖导入进去作用是可以做到每次修改内容不需要重新启动tomcat
导入热部署依赖后还需要在
中加入下面这句
spring.devtools.restart.additional-paths= 需要监听的文件夹路径,可以直接填入项目启动路径例如上面结构目录中com.example.demo
<?xml version="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.0</modelVersion>
<!-- SpringBoot启动父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version> <!-- lookup parent from repository -->
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>springbootDemo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootDemo2</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
<!-- web -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 插件类 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.example.demo.SpringbootDemo2Application</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
疑问:当导入SpringBoot启动父类parent包后,每次tomcat做出响应会出现[nio-8080-exec-9]系列,但是项目依然能正常运行,将这个parent父类去掉后就不会出现。不知道具体由什么影响

创建dao层实体类
搞个简单测试用就少写点属性
创建Person.java类创建三个属性,name,age,address
package com.example.demo.Controller;
import java.util.Arrays;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.test.annotation.Commit;
//对Person类创建的对象名称进行注入 是类创建的对象名称person 不是直接写入class类名Preson。 对应controller
@Component
@ConfigurationProperties(prefix="person")
//person 和下面类中的属性名称这样才能取到对应数据
public class Person {
private String name;
private int age;
private String[] address;
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age+"]";
}
}
配置application.properties的内容
properties,yml,yaml可以完成相同的配置工作,properties和yml适用于springboot中,同时存在时,
properties>yml>yaml,和高优先级不重复的配置会把低优先级的补充进来,否则都使用最高优先级的配置。
书写格式的对比和特点可以参考——》
spring.application.name=springbootDemo2
#设置端口tomcat使用端口号以及编译方式
server.port=8080
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8
person.name=xiaoming
person.age=20
address[2]=yuansu1,yuansu2
msg1="hello world"
spring.devtools.restart.additional-paths=com.example.demo
*重点 创建Controller包
Controller控制层主要的作用就是连接前端和后端的访问请求和数据交互,算是前后端沟通的桥梁。收到客户端请求,做出对应的相应和返回数据。
package com.example.demo.Controller;
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Demo2Controller {
//注入addre数组第一个内容到address1变量中
@Value("${address[0]}")
private String address1;
@Value("${person.name}")
private String name;
//多个对象注入,需要在实体类中加对应使用规则的注解
@Autowired
private Environment env;
//直接注入一个对象
@Autowired
private Person person;
@RequestMapping("/hello2")
public String hello2(){
System.out.println(address1);
System.out.println(name);
//使用Enviroment时 注解@Value中的参数
System.out.println(env.getProperty("address[0]"));
//使用Component时使用的是类创建对象
System.out.println(person);
//通过person对象获取address数组
return "hello 22";
}
@RequestMapping("/hello")
public String hello(){
return "hello spring boot!";
}
}
相应结果

本文通过一个Spring Boot项目,演示了如何让实体类User获取application.properties中的配置数据,并在Controller层进行操作。首先介绍了项目的基本结构和配置,包括pom.xml的依赖设置和热部署配置。接着创建了简单的Person实体类,然后配置了application.properties文件。最后,重点讲解了Controller层的作用,它是前端和后端交互的桥梁,负责处理客户端请求并返回数据。

被折叠的 条评论
为什么被折叠?



