Java 在SpringMVC中使用来自其他项目的类
我有一个相当复杂的问题,它不是真正的代码,所以请允许我列出的情况 我有一个web应用程序(SpringMVC),它必须采用一些表单数据,然后在“提交”时必须执行一些功能 问题的一部分是大量的bean定义和奇怪的依赖关系,导致了一个奇怪的项目层次结构。以下是相关模块及其说明的列表:Java 在SpringMVC中使用来自其他项目的类,java,spring,spring-mvc,web,dependencies,Java,Spring,Spring Mvc,Web,Dependencies,我有一个相当复杂的问题,它不是真正的代码,所以请允许我列出的情况 我有一个web应用程序(SpringMVC),它必须采用一些表单数据,然后在“提交”时必须执行一些功能 问题的一部分是大量的bean定义和奇怪的依赖关系,导致了一个奇怪的项目层次结构。以下是相关模块及其说明的列表: 视图-这是一个Maven&Spring MVC项目,包含我的JSP、控制器和所有重要的基于视图的内容。内置到.war中并部署在服务器中。与这些其他模块没有依赖关系 web-这是一个Maven&Spring MVC项目
- 视图-这是一个Maven&Spring MVC项目,包含我的JSP、控制器和所有重要的基于视图的内容。内置到.war中并部署在服务器中。与这些其他模块没有依赖关系
- web-这是一个Maven&Spring MVC项目,除了充当视图和bean之间的中间人之外,似乎没有什么作用。内置到.war中并部署在服务器中。具有对bean的依赖性
- bean-基本上只包含要使用的对象和包含“invoke”方法以触发业务功能的类。有业务上的依赖性
- 业务-这是一个Maven&Spring项目,其中包含我的所有业务逻辑
@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...");
}
很抱歉写了一本小说。有人知道在不添加依赖项的情况下访问所需方法的方法吗?请求映射会有帮助吗?任何和所有的帮助都将不胜感激
谢谢
编辑:为了澄清,流程应该是:视图中的“执行”调用web中的“调用”,在bean中调用方法“调用”,在业务中调用方法“调用”web应用程序通常有一个,其中较低层不应调用其上一层中的代码。这就是你想要做的,这不是一个好主意。你能解释一下你试图调用的方法是做什么的吗?也许有更好的办法,当然。业务执行一个事务。这个模块结构是一个要求,所以很遗憾我不能改变它。流程应该是:视图中的“执行”在web中调用“调用”,在bean中调用方法“调用”,在业务中调用方法“调用”,这些单独的项目是完全独立的吗?比如,您有一个“视图”JAR、“web”JAR、“beans”JAR和一个“业务”JAR?如果是这样的话,只要合适的罐子放在合适的地方,我想一切都会正常的。在我看来,正确的“位置”应该是“WEB”模块中的WEB-INF/libs,因为容器会将其视为一个单元。所以网络有豆罐,豆罐有业务
@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...");
}