El archivo de configuración de propiedades es el siguiente:
human.name=Mr.Yu
human.age=21
human.gender=male
Cómo vincular la configuración en propiedades a JavaBean, nuestro enfoque anterior es el siguiente:
public class PropertiesUtil {
public static void getProperties(Person person) throws IOException {
Properties properties = new Properties();
properties.load(new FileInputStream("src/main/resources/demo.properties"));
//得到配置文件key的名字
Enumeration enumeration = properties.propertyNames();
while (enumeration.hasMoreElements()){
String key =(String)enumeration.nextElement();
String value = properties.getProperty(key);
System.out.println("key="+key+"——————value="+value);
//封装到JavaBean
//以下内容省略
}
}
}
Resultado de salida:
key=human.name——————value=Mr.Yu
key=human.age——————value=21
key=human.gender——————value=male
Process finished with exit code 0
Puede ver que este proceso es muy complicado, pero este proceso se volverá muy simple en SpringBoot.
Hay tres métodos en SpringBoot:
1.Anotación @ ConfigurationProperties + anotación @Component (o @Controller o @Service o @Repository)
- Solo los componentes en el contenedor tendrán las poderosas funciones proporcionadas por SpringBoot, es decir, si necesitamos usar la anotación @ConfigurationProperties, primero debemos asegurarnos de que el par de objetos JavaBean estén en el contenedor IoC, por lo que necesitamos usar la anotación Component para agregar componentes Al contenedor.
- En la anotación @ConfigurationProperties, el prefijo y el valor son alias entre sí
- Eso es
@ConfigurationProperties(value = "human")
lo@ConfigurationProperties(prefix = "human")
mismo - prefijo y valor se refieren al significado del prefijo
Prueba de código:
archivo de configuración de propiedades:
human.name=Mr.Yu
human.age=21
human.gender=male
Clase de persona:
@Component 只有在容器中的组件,才会拥有SpringBoot提供的强大功能
@ConfigurationProperties(value = "human")
public class Person {
public String name;
public int age;
public String gender;
public Person() {
}
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
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;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
}
Las clases de prueba son las siguientes:
//@Controller
@ResponseBody以字符串的方式写给浏览器,而不是跳转到某个页面
//@ResponseBody
//@RestController = @Controller + @ResponseBody
@RestController
public class HelloController {
//自动注入属性
@Autowired
Person person;
@RequestMapping("/person")
public Person getPerson(){
return person;
}
}
Resultados de la prueba:
2.Anotación @ ConfigurationProperties + anotación @ EnableConfigurationProperties
De esta manera, la anotación @EnableConfigurationProperties debe escribirse en la clase de configuración. @EnableConfigurationProperties significa activar la función de configuración de propiedad, cuya función de configuración de propiedad está activada, porque nuestra clase Person anterior quiere configurar el enlace, por lo que lo agregamos más adelante Parámetros Person.class:@EnableConfigurationProperties(Person.class)
La función de @EnableConfigurationProperties (Person.class) es registrar el componente Person en el contenedor. El nombre del objeto es: humano -com.ysw.boot.properties.Person donde humano es el valor del prefijo en @ConfigurationProperties (valor = "humano") Valor de
Todavía hay anotaciones @ConfigurationProperties en la clase Person. Este método reemplaza la anotación @Component en la clase Person con la anotación @EnableConfigurationProperties (Person.class) en la clase de configuración.
Este método se usa principalmente cuando se hace referencia a paquetes de terceros, como el primero Hay una clase Person en el paquete de terceros. @Component no se usa en esta clase. No podemos agregar @Component a la clase en el paquete de terceros. En este momento, podemos usar el método de agregar la anotación @EnableConfigurationProperties a la clase de configuración.
3. @ ConfigurationProperties anotación + @Import anotación
- Use @Import para crear automáticamente este tipo de componente en el contenedor, y el nombre del componente predeterminado es el nombre completo de la clase
- La anotación @Import tiene el mismo efecto que la anotación @ConfigurationProperties en 2
- Es solo que tienen diferentes nombres registrados en el contenedor:
- El nombre del objeto registrado con la anotación @ConfigurationProperties en el contenedor es: human-com.ysw.boot.properties.Person donde humano es el valor del prefijo en @ConfigurationProperties (valor = "humano")
- El nombre del objeto registrado en el contenedor con la anotación @Import es: com.ysw.boot.properties.Person
Clase de configuración: Clase de
persona : Clase de
prueba:
archivo application.properties:
server.port=8888
human.name=Mr.Yu
human.age=21
human.gender=male222
Resultados de la prueba: