如何使用grails中的现有java类
如何从Grails应用程序中调用驻留在现有Java类中的方法? 是否有必要/建议将其包含在服务中?
把你的源码放在src / java中。 然后在conf / spring / resources.groovy中,您可以这样做,例如:
// Place your Spring DSL code here beans = { myJavaFunction(com.my.javafunction) }
然后,您可以将其注入控制器或服务:
def myJavaFunction
是lib /文件夹中的JAR文件中的类,还是src /文件夹中的.java文件中的类?
无论哪种方式,都不需要将其包装在服务中。 您可以从任何地方构造类的实例并在其上调用方法。
如果你需要在事务中包装方法调用,那么我将它放在一个服务中。 否则只需直接调用即可。 将其置于服务中的唯一其他原因是使用作用域function(即,如果您想要为每个请求创建类的新实例)
干杯
背风处
我以为我应该发送关于如何使用grails 2.2的更新,因为我做了很多环顾四周,发现了许多看起来不起作用的无关紧要的东西,最终让它以这种方式工作:
Project name: gp22 Grails Domain Example name: DemoGrailsDomain JavaClass:src/java/vv/Baggie.java Controller: DemoGrailsDomainController
1:src / java / vv / Baggie.java
package vv; import gp22.DemoGrailsDomain; public class Baggie { public int myresult(int value1) { int resultset=10+value1; return resultset; } public int getResult(int value1) { int aa=myresult(value1); return aa; //You can call your domain classes directly // Once called do a control shift o to pull in the above import example //DemoGrailsDomain getdomain = new DemoGrailsDomain(); } }
DemoGrailsDomainController:
def list(Integer max) { //def myJavaFunction Baggie a=new Baggie() int passit=5 def bb=a.getResult(passit); println "--"+bb
现在对你的控制器进行控制转移,它将导入vv.Baggie
现在,当我点击浏览器上的列表时,println显示:
| 服务器运行。 在我的控制台上浏览到localhost:8080 / gp22 –15
你有一个值从Grails控制器传递给处理和返回的Java类,Java类也可以调用Groovy域并检索信息
如果你将它们打包在.jar文件中,那么只需将jar文件放入你的项目/ lib中
没有必要作为服务包装。 如果你使用spring,只需将bean添加到resource.groovy中
- 在Tomcat中,java.lang.LinkageError:从引导类加载器加载JAXB 2.1 API
- Grails @Autowire在Java类中无法正常工作
- 没有节点的数据类型:org.hibernate.hql.internal.ast.tree.IdentNode HQL
- 打开zip文件或缺少JAR清单时出错:C:/ Program
- Twitter的Java / Grails库:JTwitter,Twitter4J或Grails插件?
- Grails XML编组:更改默认的“”根元素名称
- 如何在Grails或Java Application中轻松实现“谁在线”?
- 尽管chmod 777,java.io.FileNotFoundException(权限被拒绝)
- Hibernate / GORM:flush()不处理集合