Springboot属性赋值

本文探讨了SpringBoot中属性赋值的重要性,强调将属性值配置到源码之外,如使用yml或properties文件,以方便在生产环境中随时修改而无需重新编译。文章提到了两种方式:通过系统配置文件赋值(不推荐)和自建文件配置(推荐),并详细阐述了这两种方法的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   为什么要外置为属性赋值?
说明:当配置需要经常修改的属性值时,如果需要修改源码,则要经常重新编译,在生产中肯定不可取,所有将属性值配置到源码之外,用yml或者properties文件,好处就是随意修改,不用重新编译。

 

首先要跟目录发布,不然根本读不到文件

#服务器配置
server:
  port: 8080              #端口号8080
  servlet:
    context-path: /     #根目录发布

1.用系统配置文件赋值(不推荐

  • 在系统的yml配置属性值
jdbc:
  url: 127.0.0.1:3306
  username: root
  • 创建controllerl类,运用@Value直接赋值
//返回JSON字符传
@RestController
public class TestController  {

        @Value("${jdbc.url}")
		private String url;
        @Value("${jdbc.username}")
		private String username;
	
		@RequestMapping("/jdbc")
		public String getMessage() {
			return url+"+"+username;}

}
  •  输入localhost:8080/jdbc查看

  • 批量赋值

如果数据很多,每个都要@Value,肯定不现实

引入jar包

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-configuration-processor</artifactId>
		<optional>true</optional>
	</dependency>

改造controller类

@RestController
@ConfigurationProperties(prefix = "jdbc")
public class TestController { 
		private String url;
		private String username;
		public String getUrl() {
			return url;
		}
		public void setUrl(String url) {
			this.url = url;
		}
		public String getUsername() {
			return username;
		}
		public void setUsername(String username) {
			this.username = username;
		}
		@RequestMapping("/jdbc")
		public String getMessage() {
			return url+"+"+username;}
		//必须添加set,get方法
}

2.自建文件配置(推荐)

引入jar包

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-configuration-processor</artifactId>
		<optional>true</optional>
	</dependency>

YML文件是SpringBoot程序中最为重要的核心配置文件,配置文件本来就很多,在加上赋值,就让可读性变差,另外建立文件,可以分类,更易管理。

  • 在resources下创建properties文件夹管理配置文件
  • 在properties目录下创建测试文件student.properties
student.id=999
student.name=xxxjjj
  • 编辑StudentController类
@RestController
//spring容器启动时加载指定的配置文件
@PropertySource("classpath:/properties/student.properties")
public class StudentController {
	
	@Value("${student.id}")
	private Integer id;
	@Value("${student.name}")
	private String name;
	
	@RequestMapping("/student")
	public String getMsg() {
		return id+name;
	}
	
}
  • 输入localhost:8080/student

 

3.配置实例化对象

  • 创建实体类

//lambok插件
@Data
//链式加载 重写SET
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
//配置初始化数据
@ConfigurationProperties(prefix="user")
public class User {
	private Integer id;
	private String username;
	private Integer age;
	private String sex;

}
  • 配置文件user.properties

user.id=1001
user.username=tomcat
user.age=18
user.sex=nan
  • 配置类
//交给spring容器管理
@Component 
//配置文件路径
@PropertySource("classpath:/properties/user.properties")
public class UserConfig {
	@Value("${user.id}")
	private  Integer id;
	@Value("${user.username}")
	private  String username;
	@Value("${user.age}")
	private  Integer age;
	@Value("${user.sex}")
	private  String sex;
	//spring通过配置类实例化对象
	@Bean	
	public  User user() {
		return new User(id, username,age,sex);
	}
	
}
  • 测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class Day01DemoApplicationTests {
	@Autowired
	private User user;
	@Test
	public void contextLoads() {
		System.out.println(user);
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值