# 属性定义与注入

# @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; 
}

关于评论

评论前请填好“昵称”、“邮箱”这两栏内容,否则不会收到回复,谢谢!