使用Spring MVC中其他项目的类

时间:2013-07-16 20:07:37

标签: java spring spring-mvc web dependencies

我有一个相当复杂的问题而且它并不是关于代码的,所以请允许我列出这种情况。

我有一个Web应用程序(Spring MVC),它必须获取一些表单数据,然后“提交”必须执行某些功能。

部分问题是无数的bean定义和奇怪的依赖关系,导致奇怪的项目层次结构。以下是相关模块及其说明的列表:

  • 观看次数 - 这是一个Maven& Spring MVC项目,包含我的JSP,我的控制器和所有重要的基于视图的东西。获取内置到.war并部署在服务器中。与这些其他模块没有依赖关系。
  • 网络 - 这是一个Maven&除了作为 views beans 之间的中间人之外,Spring MVC项目似乎没有其他目的。获取内置到.war并部署在服务器中。具有 beans 的依赖关系。
  • beans - 基本上只包含要使用的对象以及包含“invoke”方法的类,以触发 business 功能。具有业务的依赖关系。
  • 业务 - 这是一个Maven& Spring项目,包含我的所有业务逻辑。

我尝试绕过所有中间人并将业务 beans web 依赖关系放入视图< / em>,但这会导致各种bean定义问题。依赖关系必须保持原样。

所以我最终需要是一种从视图模块中的 web 中的类调用方法的方法。

以下是 views 模块

中的一些代码

JSP:

<html>
<head>
<title>start JSP</title>
</head>
<body>
<table>
    <tr>
        <td><form:form method="post" action="execute">
                <table>
                    <tr>
                        <td align="right">a:</td>
                        <td align="left"><input name="a" /></td>
                    </tr>
                    <tr>
                        <td align="right">b:</td>
                        <td align="left"><input name="b" /></td>
                    </tr>
                    <tr>
                        <td align="right">c:</td>
                        <td align="left"><input name="c" /></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><input type="submit" name="action" value="Submit" /></td>
                    </tr>
                </table>
            </form:form></td>

    </tr>
</table>
</body>
</html>

控制器:

@Controller
public class Controller {

    @Autowired
    Service service;

    @RequestMapping(value = "/execute", method = RequestMethod.POST)
    public String execute(@ModelAttribute("form")
                        Form form, BindingResult result) {

    String a = transactionForm.getA();
    String b = transactionForm.getB();
    String c = transactionForm.getC();

    Thing thing = new Thing();
    thing.setA(a);
    thing.setB(b);
    thing.setC(c);
    service.execute(thing);
    return "start";
}
}

服务:

@Service
public class ServiceImpl implements Service {

@Override
public void execute(Thing input) {

    //This is where I need to call "invoke" from a class in my web module

    System.out.println("Executing...");
}

很抱歉写小说。有没有人知道如何在不添加依赖项的情况下访问我需要的方法? RequestMapping会有帮助吗?任何和所有的帮助将不胜感激

谢谢!


修改为了澄清,流程应该是:视图中的“执行”调用 web 中的“调用”调用方法 beans 中的“invoke”调用 business 中的方法“调用”

0 个答案:

没有答案