Spring项目中执行Java脚本

问题:在已搭建好Spring环境的JavaWeb项目中,怎么运行一段Java代码,执行一些类似脚本的功能。

情况一:测试局部功能,不需要依赖Spring框架的。

方法:IDEA中新建一个类,编写主函数(快捷键psvm),把要测试的一小段代码写在这个主函数中,然后右键选择Run...Main(),即可独立运行本类。

public static void main(String[] args) {
    System.out.println(UUID.randomUUID().toString());
}

情况二:运行的功能需要依赖Spring框架的,如需要调用Service层、Dao层的。比如统计数据库中的相关数据并输出日志、更新服务器资源等。

方法:跟方法一类似,只不过需要依赖Spring框架,要在主函数中手动引入Spring环境,才能调用现有的Service层、Dao层功能。网上找到的Java脚本引入Spring环境的方法如下。

public static void main(String[] args) {
    GenericXmlApplicationContext context = new GenericXmlApplicationContext();
    context.setValidating(false);
    context.load("classpath*:dispatcher-servlet.xml"); // 上下文环境引入Spring的配置文件,注意文件名一致
    context.refresh();
    
    // 调用Service层执行之后的逻辑
}

情况三:同样是运行的功能需要依赖Spring框架的,如需要调用Service层、Dao层的。

思路:跟方法二的区别是不在新建的类中写主函数,而是采用标准的走接口的形式执行Java代码。即写一个接口方法,运行后端服务,调用时可以写一个网页上的按钮触发,或者是直接在浏览器输入url触发都可以。

写法:参考SSM架构的Java项目,在Controller、Service、ServiceImpl、Dao层都新建一个文件,采用Controller层调Service层接口,ServiceImpl层是Service实现类,ServiceImpl层调Dao层跟数据库交互。

接口入口Controller层:

@Controller
public class UserController {

    @Autowired
    private IUserService iUserService;

    @RequestMapping(value = "test.do", method = RequestMethod.GET)
    @ResponseBody
    public void testFunction(String username){
        iUserService.test(username);
    }
    
}

其他层根据自己需求写就行了,跟着SSM架构的分层与调用套路即可。

注意一个小问题是@RequestMapping注释中method可以不写,如果写为method = RequestMethod.POST则浏览器不能通过地址栏输入url来调用该接口,因为地址栏url用的是GET请求方法。如果仅为内部开发环境下运行脚本,根据自己需求怎么方便怎么来就好。

原文地址:https://www.cnblogs.com/guxin/p/8241721.html