【SpringBoot 】 组件管理 + 属性注入?spring 属性注入方式

【SpringBoot 】 组件管理 + 属性注入public String hello() {
System.out.println(user); // 管理单个对象
// 管理多个对象, 默认是单例的, 需要设置 prototype

公共字符串你好(){

System.out.println(user); //管理单个对象。

//管理多个对象。默认是单例。你需要建立一个原型

System.out.println(calendar1.getTime()); //对象创建成功。

System.out.println(calendar1==Calendar2); //默认是单例,因此需要设置原型以使其成为多例。

返回“你好,Spring Boot!”

}

财产注入

========================================================================

SpringBoot使用全局配置文件,配置文件名是固定的。

应用属性

应用程序.yml

配置文件的作用:更改SpringBoot自动配置的默认值。 SpringBoot会自动为您进行最低级别的配置。

Springboot提供了两种注入方式:基本属性注入和对象注入。

基本属性注入@Value

基本属性包括int、String、Date、String[]、List、Map等。

基本属性注入:使用注解@Value(\’${xxx}\’)。

@RestController

@RequestMapping(“你好”)

公共类HelloController {

@Value(“${服务器.端口}”)

私人国际端口。

@Value(“${str}”)

私有字符串str;

@Value(“${bir}”)

私人日期栏;

@Value(“${strs}”)

私有字符串[] strs;

@Value(“${列表}”)

私人名单名单;

@Value(“#{${maps}}”) //Map注入值有点特殊

私有MapString,字符串映射。

@GetMapping(“你好”)

公共字符串你好(){

//端口=8989

System.out.println(\’端口=\’ + 端口);

//str=詹宇

System.out.println(\’str=\’ + str);

//时间=2012 年12 月12 日星期三12:12:12 CST

System.out.println(\’时间=\’ + bir);

//啊

//bb

//抄送

for (字符串str : strs) {

System.out.println(str);

}

//张三

//仙人

//王武

list.forEach( v – System.out.println(v));

//k=aa, v=小艺

//k=bb, v=小二

//k=cc, v=小三

地图.forEach((k, v) – {

System.out.println(\’k=\’ + k + \’, v=\’ + v);

});

返回“你好,Spring Boot!”

}

}

配置application.properties:

服务器端口=8989

属性注入

str=詹宇

账单=2012/12/12 12:12:12

strs=aa、bb、cc

名单=zhangsan、lisi、wangwu

地图={\’aa\’:\’小一\’, \’bb\’:\’小二\’, \’cc\’:\’小三\’}

对象模式注入@ConfigurationProperties

基于对象的注入使用注解:@ConfigurationProperties(prefix=\’prefix\’)

@ConfigurationProperties告诉SpringBoot该类的所有属性都绑定到配置文件。

@Component 是必需的,因为如果该组件是容器内的组件,则容器只能提供@ConfigurationProperties 功能

@ToString

@Data //必填

@Component //也可以使用@Configuration

@ConfigurationProperties(prefix=“user”) //必需

公共类用户{

私有字符串ID;

私有字符串名称。

私人整数年龄。

私人日期栏;

}

在控制器中使用:@Autowired完成自动插入。

@RestController

@RequestMapping(“你好”)

公共类HelloController {

@Autowired

私人用户用户;

@GetMapping(“你好”)

公共字符串你好(){

System.out.println(用户);

//用户(id=1721,name=yusael,age=20,bir=12 月12 日星期三12:12:12 CST 2012)

返回“你好,Spring Boot!”

}

}

配置application.properties:

自定义对象属性注入

用户ID=1721

用户名=Jenyu

用户年龄=20

用户.bir=2012/12/12 12:12:12

注意:可以通过引入依赖项—— Profile Processor 来构建自定义注入元数据。

这意味着引入这个依赖后,在将注入对象写入配置文件时会出现提示。如果不安装,则不会有任何效果。

org.springframework.boot

Spring Boot配置处理器

真相

两种注射方式比较

| @配置属性|

| — | — |

| 特点| 配置文件中一一指定属性

| 不支持松散绑定(松散语法)。

| 不支持|

| 支持JSR303 数据验证

| 复杂类型封装支持| 不支持

当您只需要为特定业务逻辑检索配置文件中的特定值时,请使用@Value。

如果你想专门创建一个映射到配置文件的JavaBean,可以直接使用@ConfigurationProperties。

注射细节

配置文件注入值数据校验 @Validated

@成分

@ConfigurationProperties(前缀=“人”)

@Validated //配置文件注入值数据验证

公开课人{

/**

property name=\’lastName\’ value=\’Literal/${key}从环境变量和配置文件中获取值/#{SpEL}\’/property

*/

//姓氏必须是电子邮件格式

@电子邮件

//@Value(“${person.last-name}”)

私人字符串姓氏;

//@Value(“#{11*2}”)

私人整数年龄。

//@值(“真”)

私人布尔老板。

私人出生日期;

私有MapString,对象映射;

私人名单名单。

私家狗。

加载指定的配置文件 @PropertySource

@PropertySource加载指定的配置文件。

//加载指定的配置文件

@PropertySource(值={\”classpath:person.properties\”})

@成分

@ConfigurationProperties(前缀=“人”)

公开课人{

私人字符串姓氏;

私人整数年龄。

私人布尔老板。

}

导入 Spring 的配置文件 @ImportResource

@ImportResource:导入Spring配置文件并启用配置文件的内容。

Spring Boot没有Spring配置文件,也不会自动识别您创建的配置文件。

写在最后

这次采访我们收集了很多面试题!

以下是面试问题截图。

{“classpath:person.properties”})

@成分

@ConfigurationProperties(前缀=“人”)

公开课人{

私有字符串姓氏;

私人整数年龄。

私人布尔老板。

}

导入 Spring 的配置文件 @ImportResource

@ImportResource:导入Spring配置文件并启用配置文件的内容。

Spring Boot没有Spring配置文件,也不会自动识别您创建的配置文件。

写在最后

这次采访我们收集了很多面试题!

以下是面试问题截图。

[外部链接图像正在传输.(img-q9s0FhJw-1720023395964)]

#【SpringBoot】以上组件管理+属性注入相关内容来源网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92819.html

(0)
CSDN的头像CSDN
上一篇 2024年7月4日
下一篇 2024年7月4日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注