springboot中实体类获取properties中数据练习

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

实现功能

通过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,和高优先级不重复的配置会把低优先级的补充进来,否则都使用最高优先级的配置。
书写格式的对比和特点可以参考——》

properties和yml书写格式的对比

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!";
}
	
}

相应结果
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值