I have weird behavior when running @Inject in Spring. This example works well:
@Controller @RequestMapping("/") public class HomeController { @Autowired private SomeBean someBean; @RequestMapping(method = GET) public String showHome() { System.out.println(someBean.method()); return "home"; } }
But if I replaced @Autowired with @Inject , the showHome method will throw a NullPointerException because someBean is null . Same thing with setter injection. But with constructor injection, both @Autowired and @Inject work well.
Why is this happening?
I am using Spring 4.3.1. My dependencies in pom.xml are as follows:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependencies>
source share