在搭传统ssh框架时,碰到一个令人无比头疼的问题;
当采用注解式(即零配置)配置spring bean时,发现action怎么也找不到
更诡异的是,通过使用InitializingBean接口,发现LoginAction确实是已经被spring加载了的,而且其他bean也都能够正确组装。
分析下后,觉得问题不在于spring没有加载bean,那是不是struts2配置的问题呢?
我struts2的配置(部分)如下:
<action name="login" class="LoginAction">
<result name="teacher">/index.jsp</result>
<result name="fail">/loginFailed.html</result>
</action>
当url为/login时,struts2会向spring索取名字为"LoginAction"的action
两边线索都向中间聚拢,就是在这接头点出了问题:
package com.jyzz.tlms.action;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.jyzz.tlms.logic.LoginLogic;
@Component
public class LoginAction extends CommonAction{
/**
*
*/
private static final long serialVersionUID = -6851791110535117944L;
@Autowired
private LoginLogic ll;
public String execute() throws Exception{
ll.doSth();
return "teacher";
}
}
这里面作为一个菜b,不明白@Component后,spring是如何命名这个类的id的,如果想当然的以为是"LoginAction"的话(受@Autowired误导),那就是这个bug的来源了
所以,在这,为了解决这个bug,只要
@Component("LoginAction")
即显式的指明这个action的id即可。
也希望有大神能对@Component不显式指明id的情况下,spring默认给的id是什么这个问题做点解答。
- 大小: 831.4 KB
分享到:
相关推荐
通过以上步骤,你应该能够解决Struts2和Spring3注解找不到action的问题。如果问题依然存在,进一步检查项目的具体配置和代码,或者寻求更多专业帮助。记住,调试和解决问题是提升技术能力的重要环节。祝你成功解决...
Spring 和 Struts2 是两个非常流行的 Java Web 开发框架,它们各自在应用程序的控制层和服务层扮演着重要的角色。Spring 提供了强大的依赖注入(DI)和面向切面编程(AOP),而 Struts2 则是用于处理 HTTP 请求和...
- 在使用Struts2-Spring插件时,注意Action类的生命周期是由Spring控制,而非Struts2。 整合Spring和Struts2是一个常见的Java Web开发实践,熟练掌握这一技能能够提高开发效率,提升应用的可维护性和扩展性。在实际...
Struts2 和 Spring 的整合是企业级 Java Web 开发中常见的技术栈,通过注解配置可以使项目更加简洁、易于维护。Struts2 提供了一种使用注解替代 XML 配置的方式,使得开发者无需编写繁琐的 struts.xml 文件,即可...
在整合Spring时,我们通常会利用Spring的Action代理来替代Struts2默认的Action实例化方式,这样可以将Action的创建和依赖注入交给Spring容器来管理。具体实现包括在Struts配置文件中声明Spring插件,并在Spring的...
这通常通过使用Spring插件来实现,它会在Struts2启动时自动从Spring容器加载所有标记为@Controller的Bean。在`struts-plugin.xml`中,添加如下配置: ```xml <constant name="struts.objectFactory" value="org....
整合Spring和Struts 2的主要目的是将Spring的依赖注入和管理能力引入到Struts 2的Action中,以及利用Spring的AOP进行事务管理。整合步骤通常包括以下几个部分: 1. **添加依赖**:在项目中引入Spring和Struts 2的库...
这样,每次请求时,Struts2会从Spring容器中获取Action实例,而不是使用默认的实例化方式。 4. **Action类的配置**:Action类需要实现Spring的`org.springframework.stereotype.Component`注解,以便Spring能识别并...
在整合这三个框架时,首先需要在`struts2-spring-plugin.xml`中配置Struts2与Spring的集成,这样Struts2的Action就可以直接由Spring管理。接着,通过`applicationContext.xml`配置Spring的bean,包括数据库连接池、...
- 然后,配置Struts2的核心过滤器,在web.xml中指定`struts2-convention-plugin`,这样Struts2会自动识别注解进行Action配置。 - 接着,配置Spring,创建Spring的配置文件,使用`@Configuration`注解声明这是一个...
在整合这三个框架时,我们需要使用Spring的`Struts2SpringPlugin`来使Struts2与Spring协同工作。此外,还需要在`struts.xml`或`struts-plugin.xml`中添加相应的配置。 在`lib1`文件中,可能包含了项目所需的依赖库...
Struts2、Hibernate4和Spring3是Java Web开发中的三个核心框架,它们分别负责MVC模式中的Action控制、持久化层管理和依赖注入。这三种框架的整合能够提供一个高效、灵活且可维护的Web应用解决方案。 **Struts2** 是...
Struts2与Spring的整合使得我们可以通过Spring的注解来管理Action类。首先,我们需要在Struts2的配置中启用Spring插件,然后在Spring的配置文件中声明Action类为bean。这样,Spring会负责Action类的实例化和依赖注入...
2. **Spring MVC与Struts2的集成**:虽然两者都有MVC模式,但在整合时,通常会使用Struts2来处理请求的路由和响应,而Spring MVC则处理更复杂的视图解析和数据绑定。 3. **Spring事务管理**:Spring提供了强大的...
同时,Struts2与Spring框架的整合使得bean可以直接在Action类中注入,提高了代码的可维护性和可测试性。 Mybatis3则是一个轻量级的持久层框架,它简化了SQL操作并提供了强大的映射功能。Mybatis3支持注解方式的SQL...
Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2主要用于MVC(Model-View-Controller)架构的实现,提供控制层的支持;Hibernate是对象关系映射(ORM)工具,负责数据持久...
这个"struts2.1.6 + hibernate3.1 + spring2.5"的整合案例主要展示了如何在不使用大量XML配置的情况下,通过注解来简化集成过程。以下是相关的知识点: 1. **Struts2框架**:Struts2提供了Action、Result和...
**添加Spring支持**:在Struts2的配置中,引入Spring插件,如`<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />`,这将使Struts2使用Spring来创建Action实例...
Struts2、MyBatis和Spring是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、数据持久层和应用上下文管理。这篇文档将深入探讨如何将这三个框架整合在一起,以及如何结合数据库进行实际应用。 ...
4. **FilterDispatcher**:在Struts2与Spring整合时,通常会使用`StrutsSpringObjectFactory`替换默认的`DefaultActionProxyFactory`。为此,我们需要在web.xml中配置`StrutsPrepareAndExecuteFilter`而非传统的`...