how2java_HOW-TO:在Spring 4和Java 7中使用@PropertySource批注
how2java
今天,我將我當(dāng)前正在從事的項(xiàng)目之一遷移到了Spring 4.0。 由于它是我用來(lái)學(xué)習(xí)和演示Spring功能的非常簡(jiǎn)單的Web應(yīng)用程序,因此只需要更新項(xiàng)目的POM文件并更改Spring版本。 我將項(xiàng)目部署到Tomcat 7服務(wù)器,顯然該應(yīng)用程序未啟動(dòng)。 我在IntelliJ控制臺(tái)中看到此消息: Failed to load bean class: pl.codeleak.t.config.RootConfig; nested exception is org.springframework.core.NestedIOException: Unable to collect imports; nested exception is java.lang.ClassNotFoundException: java.lang.annotation.Repeatable Failed to load bean class: pl.codeleak.t.config.RootConfig; nested exception is org.springframework.core.NestedIOException: Unable to collect imports; nested exception is java.lang.ClassNotFoundException: java.lang.annotation.Repeatable Failed to load bean class: pl.codeleak.t.config.RootConfig; nested exception is org.springframework.core.NestedIOException: Unable to collect imports; nested exception is java.lang.ClassNotFoundException: java.lang.annotation.Repeatable 。 什么……?
java.lang.annotation.Repeatable注釋是用于標(biāo)記您的注釋以便在Java 8中多次使用的元注釋(但我在項(xiàng)目中使用Java 7)。 例如:
@Repeatable(Schedules.class) public @interface Schedule { ... }@Schedule(dayOfMonth="last") @Schedule(dayOfWeek="Fri", hour="23") public void doPeriodicCleanup() { ... }此處對(duì)此進(jìn)行了很好的描述: http : //docs.oracle.com/javase/tutorial/java/annotations/repeating.html 。
Spring 4在其@PropertySource批注中利用了此功能。 提醒您,@ PropertySource批注提供了一種將名稱/值屬性對(duì)的源添加到Spring's Environment的機(jī)制 ,它與@Configuration類結(jié)合使用。 您可能已經(jīng)知道,我正在自己的配置中使用此功能:
@Configuration @PropertySource("classpath:/datasource.properties") public class DefaultDataSourceConfig implements DataSourceConfig {@Autowiredprivate Environment env;@Override@Beanpublic DataSource dataSource() {DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName(env.getRequiredProperty("dataSource.driverClassName"));dataSource.setUrl(env.getRequiredProperty("dataSource.url"));dataSource.setUsername(env.getRequiredProperty("dataSource.username"));dataSource.setPassword(env.getRequiredProperty("dataSource.password"));return dataSource;} }我首先想到的是,Spring不再與低于8的Java兼容。 不可能。 雖然這樣做GitHub上查找我發(fā)現(xiàn)了一個(gè)全新的@PropertySources注釋,是一個(gè)容器@PropertySource注解。 那就是我針對(duì)Java兼容性問(wèn)題的解決方案:在我的配置類上使用@PropertySources注釋,如下所示:
@Configuration @PropertySources(value = {@PropertySource("classpath:/datasource.properties")}) public class DefaultDataSourceConfig implements DataSourceConfig {@Autowiredprivate Environment env;}就是這樣! 進(jìn)行此更改后,我的應(yīng)用程序開始運(yùn)行,并且可以正常運(yùn)行!
編輯 :請(qǐng)參閱: https : //jira.springsource.org/browse/SPR-11086
翻譯自: https://www.javacodegeeks.com/2013/11/how-to-using-propertysource-annotation-in-spring-4-with-java-7.html
how2java
總結(jié)
以上是生活随笔為你收集整理的how2java_HOW-TO:在Spring 4和Java 7中使用@PropertySource批注的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 迅雷会员可以几个人同时用迅雷会员多人使用
- 下一篇: IBM将收购Red Hat:面向Java