我是春天的新手,有一个简单的问题。我用一个简单的构造函数编写了一个简单的控制器,注释如下。
@Controller
public class LoginController
{
private LoginService loginService;
@Inject
public LoginController(LoginService loginService)
{
System.out.println("LoginController constructor - initializing login service");
this.loginService = loginService;
}
当我尝试在浏览器中访问我的 Web 应用程序时,出现以下错误: 未找到默认构造函数;
当我用@Autowired注释替换@Inject注释时,它可以工作。 谁能解释为什么? 我读到的所有内容都说它们具有相同的行为。 我正在使用Tomcat 6.0.43。
另外,下面是我的弹簧调度程序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>
您必须从运行时类路径中缺少 JavaEE Inject API。Spring 只会在类路径中找到类时才查找@Inject
。
你可以从这里的 Maven 获取它,并将其添加到你的运行时类路径中(手动或通过依赖项)。