参考:
https://blog.csdn.net/hry2015/article/details/72353994
https://blog.csdn.net/hry2015/article/details/72453920
为@Value设置默认值。
【注意】不设置默认值的时候,而且配置文件中找不到配置项,spring启动的时候会报错。
设置默认值的方法:
@Value("$(person.name:kanpiaoxue)");
private String name;
如上:这段代码会去classpath中配置文件中找person.name,如果找不到则用默认值kanpiaoxue。
The @Value
annotation can be placed on fields, methods and method/constructor parameters to specify a default value.
Here is an example to set the default value of a field variable.
public static class FieldValueTestBean @Value("#{ systemProperties['user.region'] }") private String defaultLocale; public void setDefaultLocale(String defaultLocale) { this.defaultLocale = defaultLocale; } public String getDefaultLocale() { return this.defaultLocale; } }
The equivalent but on a property setter method is shown below.
public static class PropertyValueTestBean private String defaultLocale; @Value("#{ systemProperties['user.region'] }") public void setDefaultLocale(String defaultLocale) { this.defaultLocale = defaultLocale; } public String getDefaultLocale() { return this.defaultLocale; } }
Autowired methods and constructors can also use the @Value
annotation.
public class SimpleMovieLister { private MovieFinder movieFinder; private String defaultLocale; @Autowired public void configure(MovieFinder movieFinder, @Value("#{ systemProperties['user.region'] }") String defaultLocale) { this.movieFinder = movieFinder; this.defaultLocale = defaultLocale; } // ... }
public class MovieRecommender { private String defaultLocale; private CustomerPreferenceDao customerPreferenceDao; @Autowired public MovieRecommender(CustomerPreferenceDao customerPreferenceDao, @Value("#{systemProperties['user.country']}") String defaultLocale) { this.customerPreferenceDao = customerPreferenceDao; this.defaultLocale = defaultLocale; } // ... }
为@Value设置默认值
@Value("#{systemProperties['pop3.port'] ?: 25}")
This will inject a system property pop3.port
if it is defined or 25 if not.
@Autowired
, @Inject
, @Resource
, and @Value
annotations are handled by Spring BeanPostProcessor
implementations which in turn means that you cannot apply these annotations within your own BeanPostProcessor
or BeanFactoryPostProcessor
types (if any). These types must be 'wired up' explicitly via XML or using a Spring @Bean
method.