# 属性定义与注入
# @Value注解形式注入值
在定义Map集合的时候采用的是SpEL表达式对给定的字符串数据实现的处理操作,所以外部需要再追加一个“#{}”标记,而对于"@Value" 就是在进行各种服务整合的时候所使用的properties文件里面的配置KEY。
application.yml文件:
source: test
infos: "{'yook': 'www.baidu.com','teahcer': '测试人员'}" # Map集合
注入到类中。
@Value("${source}")
private String source;
@Value("#{{infos}}")
private String infos;
# 基于Bean的方式自动配置
可以采用application.yml与bean属性之间的自动注入操作。
application.yml文件:
muyan: # 这是kay的开始标记
mysql: mysql:http://localhost:3306/yootk
redis: redis:http://localhost:6379/0
message: #在spring里面list和数组是对等的关系
- 木言科技: www.yootk.com
- 李兴华训练营: edu.yootk.com
books: # map的方式进行
javaBase: 《java基础》
javaApplication: 《java进阶》
javaWEB: 《javaWEB》
springBoot: 《spring boot》
springCloud: 《springcloud》
java类:
@Data
@ConfigurationProperties("muyan") //配置了 注入key的头部定义
@Component
public class Source{
private String mysql; //属性名称为key名称
private String redis;
private List<String> message;
private Map<String,String> books;
}
使用的时候直接Source source
即可。
这个类的数据结构即:
{
"mysql": "mysql://localhost:3306/yootk",
"redis": "redis://localhost:6379/0",
"messages": [
"沐言科技: www.yootk.com",
"李兴华高薪就业编程训练营: edu.yootk.com"
],
"books": {
"javaBase": "《Java面向对象就业编程实战》",
"javaApplication": "《Java应用技术就业编程实战》",
"javaWEB": "《JavaWEB 就业编程实战》",
"springBoot": "《SpringBoot就业编程实战》",
"springCloud": "《SpringCloud就业编程实战》"
}
}
要求
application.yml配置的基本信息,要求类的属性名称和属性配置的名称要相同,然后才可以实现注入的处理。
# 自定义注入配置文件
一般在application.yml配置文件中进行定义,但是如果将所有的配置项都定义在里面比较麻烦,因为在springboot的整个项目里会存在大量的配置项。
这个时候可以使用properties配置文件,利用资源文件来实现属性内容的定义。
在resources目录下定义muyan.properties配置文件。
object.deptno=10
object.dname=教学研发部
object.company.cid=1099
object.company.cname=沐言科技
object.emps[0].empn0=7369
object.emps[0].ename=Smith
object.emps[0].job=办事员
object.emps[1].empno=7566
object.emps[1].enane=AlLen
object.emps[1].job=部门经理
object.emps[2].empno=7839
object.emps[2].ename=King
object.emps[2].job=首席执行官
对应的java类
@Data
@PropertitySource(value = "classpath:muyan.properties",encoding = 'UTF-8')
@ConfigurationProperties(prefix = "object")
@Component
public class Dept{
private Long deptno;
private String dname;
private Company company; //关联结构
private List<Emp> emps;
}
关于评论
评论前请填好“昵称”、“邮箱”这两栏内容,否则不会收到回复,谢谢!