我们先写一个实体类
package com.tubai.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/*
@Component是一个通用注解,可以应用于应用程序的任何类,
以使其成为Spring托管组件(简单来说,是任何Spring托管组件的通用构造型)
*/
@Component
public class Dog {
private String name;
private int age;
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
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;
}
}
在想要赋值的地方使用注解@Value(填你想要的值)
public class Dog {
@Value("小白")
private String name;
@Value("3")
private int age;
在需要用到的地方使用注解@AutoWired
使用@Primary注解。
它表示在需要自动注入一个单值依赖的地方,却有多个候选依赖,那么这个注解会指定一个类作为preference(偏好)选择。
换句话说,如果有多个候选填充,那么默认选择用@Parimary注解标记的
比如我们有一个接口名为Teacher,下面有
ChineseTeacher,EnglishTeacher两个实现类
如果不为@Qualifier注解指定参数那么默认使用类的默认别名,即类的首字母小写,比如:
ChineseTeacher类的默认别名是:chineseTeacher;
EnglishTeacher类的默认别名是:englishTeacher;
使用@Service、@Qualifier
用Service起别名 用Qualifer
像这样
@Component
@Service("dog1")
public class Dog {
@Value("小白")
private String name;
@Value("3")
private int age;
我们再写个实体类
@Component
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private int age;
private boolean happy;
private Date birthday;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
写yml
person:
name: QAQ777
age: 18
happy: true
birthday: 2020/11/24
maps: {k1: v1,k2: v2,k3: v3}
lists:
- code
- music
- girl
#也可以这样写list: [code,music,girl]
dog:
name: 小黑
age: 10
运行结果
如果遇到中文乱码的问题 那么全部上UTF-8即可…
因为xml的配置太麻烦了 此处仅配置一个属性为例子
name=芜湖飞行大队
@PropertySource(value = "classpath:QAQ.properties")
public class Person {
@Value("${name}")
private String name;
private int age;
private boolean happy;
private Date birthday;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
@SpringBootTest
class ApplicationTests {
@Autowired
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}