Reputation:
I've got problem with using @PostConstruct
and@PostDestroy
annotations in my project. I can't use these annotations and it looks like these doesn't exist despite the fact that I imported Java's annotations. I am using Java 11 and that is content of my build.gradle
file:
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'org.springframework', name: 'spring-webmvc', version: '5.1.0.RELEASE'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.7'
compile group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'
provided group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
}
Upvotes: 53
Views: 57657
Reputation: 344
Another solution which worked for me is this. Go to https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api/1.2 and download the jar file. Then copy the the jar file to your project lib directory. Finally point the project build path, under class path to the file you pasted into your local lib folder.
Upvotes: 1
Reputation: 1445
Note that both @PostConstruct
and @PreDestroy
annotations are part of Java EE. And since Java EE has been deprecated in Java 9 and removed in Java 11 we have to add an additional dependency to use these annotations:
For Maven
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
If using Gradle
implementation "javax.annotation:javax.annotation-api:1.3.2"
Found here: https://www.baeldung.com/spring-postconstruct-predestroy
Upvotes: 109
Reputation: 6414
You have only spring-webmvc, you need the rest of the spring to be able to use their annotations. Probably spring-core and spring-annotations.
Upvotes: 2