SpringBoot如何实现调用controller和Service层方法

 更新时间:2025年03月08日 14:04:48   作者:北极的企鹅88  
文章介绍了在SpringBoot中如何在工具类中调用Controller和Service层的方法,通过创建一个工具类SpringUtil,并在Spring Boot启动类中进行配置扫描注入,工具类就可以访问Controller和Service层的方法

SpringBoot调用controller和Service层方法

说明

  • 最近遇到一个问题,如何在工具类中去访问controller层与service层的方法。
  • 因为平时在调用service层时都是在controller中,有配置扫描注入,spring会根据配置自动注入所依赖的服务层。
  • 但因我们写的工具类不属于controller层,所以当所写接口需要调用服务层是,常常会为NULL。

实现

1.创建一个工具类:SpringUtil

package com.ruoyi.web.controller.employment.utils;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class SpringUtil implements ApplicationContextAware{
    private static ApplicationContext applicationContext = null;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if(SpringUtil.applicationContext == null){
            SpringUtil.applicationContext  = applicationContext;
        }
    }


    //获取applicationContext
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    //通过name获取 Bean.
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }

    //通过class获取Bean.
    public static <T> T getBean(Class<T> clazz){
        return getApplicationContext().getBean(clazz);
    }

    //通过name,以及Clazz返回指定的Bean
    public static <T> T getBean(String name,Class<T> clazz){
        return getApplicationContext().getBean(name, clazz);
    }
}

2.SpringBoot启动类调用controller和service方法

package com.ruoyi;

import com.ruoyi.web.controller.employment.ProvportController1;
import com.ruoyi.web.controller.employment.ProvportController2;
import com.ruoyi.web.controller.employment.utils.SpringUtil;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.ApplicationContext;

/**
 * 启动程序
 * 
 * @author ruoyi
 */
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class RuoYiApplication
{
	//注入service
    private static TestService testService;
    //注入controller
    private static TestController testController;

    public static void main(String[] args) throws InterruptedException {
        SpringApplication.run(RuoYiApplication.class, args);
        ApplicationContext context = SpringUtil.getApplicationContext();
        testService= context.getBean(testService.class);
        testController= context.getBean(testController.class);
        //调用service方法
        testService.getService(); 
		//调用controller方法
        testController.getController();              
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解maven安装教程以及解决安装不成功的解决办法

    详解maven安装教程以及解决安装不成功的解决办法

    这篇文章主要介绍了详解maven安装教程以及解决安装不成功的解决办法,详细的介绍了几种解决方法,非常具有实用价值,需要的朋友可以参考下
    2018-12-12
  • Java8 如何正确高效的使用并行流

    Java8 如何正确高效的使用并行流

    这篇文章主要介绍了Java8 如何正确高效的使用并行流,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 使用GSON库转换Java对象为JSON对象的进阶实例详解

    使用GSON库转换Java对象为JSON对象的进阶实例详解

    这篇文章主要介绍了使用GSON库转换Java对象为JSON对象的进阶实例详解,包括注册TypeAdapter及处理Enum类型等实际运用中可能遇到的一些复杂问题,需要的朋友可以参考下
    2016-06-06
  • Java concurrency之非公平锁_动力节点Java学院整理

    Java concurrency之非公平锁_动力节点Java学院整理

    本篇文章主要介绍了Java concurrency之非公平锁,详细的介绍了获取和释放非公平锁,有兴趣的同学可以了解一下
    2017-06-06
  • Java中对null进行强制类型转换的方法

    Java中对null进行强制类型转换的方法

    小编对null进行强转会不会抛错,非常的好奇,下面小编通过实例代码给大家介绍Java中对null进行强制类型转换的方法,感兴趣的朋友参考下吧
    2018-09-09
  • java中double转化为BigDecimal精度缺失的实例

    java中double转化为BigDecimal精度缺失的实例

    下面小编就为大家带来一篇java中double转化为BigDecimal精度缺失的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • java控制台实现聊天程序

    java控制台实现聊天程序

    这篇文章主要为大家详细介绍了java控制台实现聊天程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 浅谈JAVA如何生成UUID唯一标识

    浅谈JAVA如何生成UUID唯一标识

    这篇文章主要介绍了浅谈JAVA如何生成UUID唯一标识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Springboot 整合 Java DL4J 实现智能客服功能

    Springboot 整合 Java DL4J 实现智能客服功能

    本文主要介绍了如何使用SpringBoot整合JavaDeeplearning4j来构建一个智能客服系统,详细探讨了神经网络选择、数据集格式、技术介绍、Maven依赖、代码示例等内容,为构建高效、便捷、个性化的客户服务提供了理论支持和实践指导
    2024-10-10
  • Java实现抽奖功能

    Java实现抽奖功能

    这篇文章主要为大家详细介绍了Java实现抽奖功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11

最新评论