我@Inject
在 Spring 的工作中有一些奇怪的行为。这个例子效果很好:
@Controller
@RequestMapping("/")
public class HomeController {
@Autowired
private SomeBean someBean;
@RequestMapping(method = GET)
public String showHome() {
System.out.println(someBean.method());
return "home";
}
}
但是如果我替换@Autowired
为@Inject
,showHome
方法会抛出NullPointerException
,因为someBean
is null
。setter 注入也是如此。但是使用构造函数注入两者@Autowired
并且@Inject
效果很好。
为什么会这样?
我正在使用 Spring 4.3.1。我的依赖pom.xml
项如下所示:
<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>