在使用Spring 4 PropertySource时不能find重复

我们使用Spring 4.0.1.RELEASE和jdk6(这是固定的)。 当然,我们已经使用@PropertySource注释完成了Java中的configuration。 当我们使用gradle编译项目时,会导致一个恼人的警告消息:

org \ springframework \ context \ annotation \ PropertySource.class(org \ springframework \ context \ annotation:PropertySource.class):warning:无法在types“java.lang.annotation.Repeatable”中find注释方法的value():class没有findjava.lang.annotation.Repeatable的文件

这是由于在现有的Repeatable类中没有使用(在jdk6中),我很高兴这只是一个警告。 我喜欢gradle的干净输出,这只是令人讨厌,因为它可能混淆其他“真实”的警告(如checkstyle …)。

也许任何人都面临同样的问题,并得到一个(没有太多黑客)解决这种情况。 我只是想再次看到一个干净的输出。

我认为问题在于,在Spring 4中 ,它们使用@Repeatable注释,它只在Java 8中引入。

因此,如果你不使用Java 8,你将会继续看到这个问题,至less在这个问题得到解决之前。

顺便说一句 ,这也阻止了在Java 8以前的JDK中使用@Scheduled注释。我希望它很快就会被修复。

只是为了logging:使用

 @PropertySources(@PropertySource("classpath:path/to/config")) 

摆脱例外。

学分转到: http : //www.javacodegeeks.com/2013/11/how-to-using-propertysource-annotation-in-spring-4-with-java-7.html

我想如果你只是想摆脱警告,你可以用自定义logging器来实现这一点: http : //www.gradle.org/docs/current/userguide/logging.html

我会检查当前的实现,并将其包装在一些过滤出您要忽略的警告,转发一切不变。

摆脱Java 8下的警告的解决方法是使用下面的方法,而不是@Scheduled注释:

 @PostConstruct public void setupTaskScheduler() throws FileNotFoundException { taskScheduler = new ConcurrentTaskScheduler(); taskScheduler.schedule(new Runnable(...), new CronTrigger("0 0 * * * *")); }