我是Spring的新手,有一个简单的问题。 我编写了一个带有简单构造函数的简单控制器,注释如下所示。
@Controller
public class LoginController
{
private LoginService loginService;
@Inject
public LoginController(LoginService loginService)
{
System.out.println("LoginController constructor - initializing login service");
this.loginService = loginService;
}
当我尝试在浏览器中访问我的网络应用时,出现以下错误: 找不到默认构造函数;
当我用 @Autowired 注释替换 @Inject 注释时,它可以正常工作。有谁能解释为什么?我读过的所有内容都表明它们具有相同的行为。我使用的是Tomcat 6.0.43。
另外,下面是我的spring dispatcher servlet xml:
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:annotation-driven/>
<context:component-scan base-package="com.rockwell_collins.webquery"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
答案 0 :(得分:0)
您必须缺少运行时类路径中的JavaEE Inject API。如果在类路径中找到类,Spring将只查找@Inject
。
您可以从Maven here获取它并将其添加到您的运行时类路径(手动或通过依赖项)。