以下這些注解在代碼中 都有解釋
@ConfigurationProperties 税稼、 @Value 烦秩、 @PropertySources 、@Configuration 郎仆、@Bean
//@PropertySources(value = {"classpath:person.properties"})
@Component//將這個(gè)組件放入容器中
@ConfigurationProperties(prefix = "person")
//@Validated//JSR303校驗(yàn)只祠,即對(duì)屬性值的輸入做一個(gè)校驗(yàn),如:Email
public class Person {
/**
* <bean class="Person>
* <property name="name" value="字面值/ ${key}從環(huán)境變量扰肌、配置文件中獲取值/ #{SpEL}"></>
* </bean>
*
* 映射注入值的區(qū)別:
*
* @ConfigurationProperties(prefix = "person"): 1抛寝、可以進(jìn)行批量映射配置文件中的值;2、支持松散綁定盗舰,
* 即屬性值為lastName晶府,配置文件中可以寫成last-name等形式的松散值。3钻趋、不支持SpEL表達(dá)式川陆;4、支持
* JSR303數(shù)據(jù)校驗(yàn);5爷绘、支持復(fù)雜類型封裝书劝,如 Map類型等。
*
*
* @Value("${person.name}"): 1土至、不可以進(jìn)行批量映射配置文件中的值购对,只能一個(gè)一個(gè)的映射;2陶因、不支持松散綁定骡苞,
* 只能跟配置文件保持一致;3楷扬、支持SpEL表達(dá)式解幽,如:#{12*2};4不支持JSR303校驗(yàn)烘苹;5躲株、不支持復(fù)雜類型封裝。
*
* 使用情況: 1镣衡,如果我們只在某個(gè)業(yè)務(wù)邏輯中需要獲取一下配置文件中的某一項(xiàng)值霜定,可以使用@Value
* 2,如果我們專門編寫一個(gè)javaBean來(lái)和配置文件中進(jìn)行映射廊鸥,我們就使用@ConfigurationProperties
*
* @PropertySources(value = {"classpath:person.properties"})望浩,加載指定的配置文件
*
*/
// @Value("${person.name}")
//name必須是一個(gè)郵箱格式
// @Email
private String name;
// @Value("#{12*2}")
private Integer age;
// @Value("false")
private Boolean student;
/**
* @Configuration表明當(dāng)前類是一個(gè)配置類,就是來(lái)代替之前的Spring配置文件
*
* 以前在配置文件中是使用<bean></bean>標(biāo)簽加組件
*/
@Configuration
public class MyConfig {
/**
* @Bean 將方法的返回值添加到容器中
* @return
*/
@Bean
public HelloWorldService hello(){
System.out.println("-------------------MyConfig");
return new HelloWorldService();
}