大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说springboot entity注解_java注解在框架中的应用,希望能够帮助大家进步!!!
1.PropertySource注解加载指定的属性文件
Spring框架提供了PropertySource注解,目的是加载指定的属性文件。
代码语言:javascript复制@Component
@PropertySource(value= {"classpath:config/jdbc-bainuo-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8",name="jdbc-bainuo-dev.properties",)
public class CustomerDataSourceConfig1 {
private String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
@Override
public String toString() {
return "CustomerDataSourceConfig{"
"url='" url '''
'}';
}
}
只听到从架构师办公室传来架构君的声音:
日暮待情人,维舟绿杨岸。有谁来对上联或下联?
上述的代码目的是加载classpath路径中config文件中的jdbc-bainuo-dev.properties。其中encoding用于指定读取属性文件所使用的编码,ignoreResourceNotFound含义是当指定的配置文件不存在是否报错,比如上文件中指定的加载属性文件是jdbc-bainuo-dev.properties。如果该文件不存在,则ignoreResourceNotFound为true的时候,程序不会报错,默认为false.
value值是设置需要加载的属性文件,可以一次加载多个,name的值我们设置的是jdbc-bainuo-dev.properties。这个值在springboot的环境中必须是唯一的,如果不设置,则值为:“class path resource config/jdbc-bainuo-dev.properteis”.上面我们配置的是classpath:config/jdbc-bainuo-dev.properties,因此Spring发现是classpath开头的,因此最终使用的是Resource的子类ClassPathResource。
如果@ProPertySource中没有设置name值,则name的值的生成规则是:根据value值查找到最终封装的Resource子类,然后调用具体的Resource子类的实例对象中的getDescription方法,其返回值为最终的name值。
代码语言:javascript复制jdbc-bainuo-dev.properties文件内容如下:
spring.datasource.shareniu.url=shareniu
application.properties文件内容如下:
spring.profiles.active=dev
代码语言:javascript复制@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(DemoApplication.class);
ConfigurableApplicationContext configurableApplicationContext = springApplication.run(args);
CustomerDataSourceConfig1 customerDataSourceConfig = configurableApplicationContext
.getBean(CustomerDataSourceConfig1.class);
System.out.print(customerDataSourceConfig);
}
}
运行上述的代码,程序的输出如下:
CustomerDataSourceConfig{url='null'}
为什么url为null,因为我们没有将spring.datasource.shareniu.url属性值自动注入到CustomerDataSourceConfig1类中的url属性中。
代码语言:javascript复制@Component
@PropertySource( name="jdbc-bainuo-dev.properties",value= {"classpath:config/jdbc-bainuo-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8")
public class CustomerDataSourceConfig1 {
@Value("${spring.datasource.shareniu.url}")
private String url;
}
另外我们还可以使用ConfigurationProperties注解
代码语言:javascript复制@Component
@ConfigurationProperties(prefix = "spring.datasource.shareniu")
@PropertySource( name="jdbc-bainuo-dev.properties",value= {"classpath:config/jdbc-bainuo-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8")
public class CustomerDataSourceConfig1 {
private String url;
}
ignoreUnkownFields:忽略未知的字段。
ignoreInvalidFields:是否忽略验证失败的字段。这个怎么理解?比如我们在配置文件中配置了一具字符串类型的变量,类中的字段是int类型,那肯定会报错,如果我们可以容忍,则需要配置该属性为true,默认值为false。