ConfigurationProperties

conditiononproperties 属性注入 configurationproperties注解 方法_应用程序

Springboot中有如下几种常见的注入方法:
@ConfigurationProperties(prefix = “student”):声明一个类作为配置类,代替xml文件
@Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签
@Value:属性注入
@PropertySource:指定外部属性文件。在类上添加@PropertySource(“classpath:/jdbc.properties”)

批量配置文件注入

@ConfigurationProperties注解:

  • 创建一个学生类,并加上@Component注解,标注其为Springboot组件,将对象的属性写在application.yaml中
  • 加上@ConfigurationProperties(prefix = “student”),prefix的值代表yaml文件中的绑定的对象名称
  • 在springboot测试类中用@Autowired自动注入对象

学生类如下

@Component
@ConfigurationProperties(prefix = "student")
public class Student {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> list;
    //省略了构造器、GetSet方法等
}

application.yaml

student:
  name: zhangsan
  age: 21
  happy: false
  birth: 2000/01/01
  maps:
    k1: v1
    k2: v2
  list:
    - code
    - music
    - girl

Test.java

@SpringBootTest
class DemoApplicationTests {
	@Autowired
	private Student student;

	@Test
	void contextLoads() {
		System.out.println(student.toString());
	}
}

JSR303校验

JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation。

在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说语义的一致性等。为了避免这样的情况发生,最好是将验证逻辑与相应的域模型进行绑定。

Bean Validation 为 JavaBean 验证定义了相应的元数据模型和 API。缺省的元数据是 Java Annotations,通过使用 XML 可以对原有的元数据信息进行覆盖和扩展。在应用程序中,通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull, @Max, @ZipCode, 就可以确保数据模型(JavaBean)的正确性。constraint 可以附加到字段,getter 方法,类或者接口上面。对于一些特定的需求,用户可以很容易的开发定制化的 constraint。Bean Validation 是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回。

conditiononproperties 属性注入 configurationproperties注解 方法_应用程序_02


conditiononproperties 属性注入 configurationproperties注解 方法_Test_03

conditiononproperties 属性注入 configurationproperties注解 方法_spring_04

@Email注解报红 是因为新版本需要validation启动器

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
	</dependency>