以下這些注解在代碼中 都有解釋
@ConfigurationProperties 、 @Value 、 @PropertySources 、@Configuration 、@Bean
//@PropertySources(value = {"classpath:person.properties"})
@Component//將這個組件放入容器中
@ConfigurationProperties(prefix = "person")
//@Validated//JSR303校驗,即對屬性值的輸入做一個校驗,如:Email
public class Person {
/**
* <bean class="Person>
* <property name="name" value="字面值/ ${key}從環(huán)境變量、配置文件中獲取值/ #{SpEL}"></>
* </bean>
*
* 映射注入值的區(qū)別:
*
* @ConfigurationProperties(prefix = "person"): 1、可以進行批量映射配置文件中的值;2、支持松散綁定,
* 即屬性值為lastName,配置文件中可以寫成last-name等形式的松散值。3、不支持SpEL表達式;4、支持
* JSR303數(shù)據(jù)校驗;5、支持復(fù)雜類型封裝,如 Map類型等。
*
*
* @Value("${person.name}"): 1、不可以進行批量映射配置文件中的值,只能一個一個的映射;2、不支持松散綁定,
* 只能跟配置文件保持一致;3、支持SpEL表達式,如:#{12*2};4不支持JSR303校驗;5、不支持復(fù)雜類型封裝。
*
* 使用情況: 1,如果我們只在某個業(yè)務(wù)邏輯中需要獲取一下配置文件中的某一項值,可以使用@Value
* 2,如果我們專門編寫一個javaBean來和配置文件中進行映射,我們就使用@ConfigurationProperties
*
* @PropertySources(value = {"classpath:person.properties"}),加載指定的配置文件
*
*/
// @Value("${person.name}")
//name必須是一個郵箱格式
// @Email
private String name;
// @Value("#{12*2}")
private Integer age;
// @Value("false")
private Boolean student;
/**
* @Configuration表明當前類是一個配置類,就是來代替之前的Spring配置文件
*
* 以前在配置文件中是使用<bean></bean>標簽加組件
*/
@Configuration
public class MyConfig {
/**
* @Bean 將方法的返回值添加到容器中
* @return
*/
@Bean
public HelloWorldService hello(){
System.out.println("-------------------MyConfig");
return new HelloWorldService();
}