是否可以在@Repository
内读取属性文件的值。
如有帮助,将不胜感激。
是否可以在@Repository
内读取属性文件的值。
如有帮助,将不胜感激。
@Component
public class StaticPropertiesProvider implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(@Nonnull final ApplicationContext applicationContext) throws BeansException {
StaticPropertiesProvider.applicationContext = applicationContext;
}
public static <T> T getProperty(final String property, final Class<T> clazz) {
return applicationContext.getEnvironment().getProperty(property, clazz);
}
}
applicationContext
字段将被填充为您的应用程序上下文,以便您可以在之后从静态的getProperties
方法中使用它。public interface MyRepository extends MongoRepository<MyDocument, String> {
@Query(value = "{'myProperty': ?0}")
List<MyDocument> findByMyProperty(int myProperty);
default List<MyDocument> findByMyProperty() {
final var myPropertyDefault = StaticPropertiesProvider.getProperty("my.property", Integer.class);
return this.findByMyProperty(myProperty);
}
}
显然,在application.properties
文件中应该有一个名为my.property
的属性名,其值为整数。
(即使使用JPA存储库也可以这样做)
@Repository
只是@Component
的一个变体。您可以通过注入Environment
来读取您的属性文件,或者您也可以使用@Value
。
@Service
、@Controller
或其他任何@Component
中,都没有任何区别。 - M. Deinum