工具类静态方法调用service接口

工具类使用静态方法调用接口还是需要使用第三种方式

在Spring Boot中,如果你想在自定义工具类中调用Service层的方法,通常有三种方式可以实现:

1通过依赖注入(Dependency Injection):这是推荐的方式,因为它符合Spring框架的设计思想,能够更好地管理和组织各个组件之间的依赖关系。

首先,在你的自定义工具类中,需要定义一个Service层的成员变量,并使用@Autowired注解进行自动注入。例如:

@Component 
public class YourCustomUtils {
 @Autowired 
private YourServiceClass yourService; // 在这里可以使用yourService调用Service层的方法 
} 

然后,在Spring Boot的配置类或者启动类上,使用@ComponentScan注解扫描自定义工具类所在的包,以确保Spring Boot能够正确地实例化该工具类。

2使用ApplicationContext获取Bean实例:如果你的自定义工具类不是由Spring管理的对象,或者无法使用依赖注入的方式,可以尝试使用ApplicationContext来获取Service层的Bean实例。

首先,在你的自定义工具类中,需要注入ApplicationContext对象,并使用getBean()方法获取Service层的Bean实例。例如:

public class YourCustomUtils { 
   private ApplicationContext applicationContext;
   public YourCustomUtils(ApplicationContext applicationContext) { this.applicationContext = applicationContext; 
   }
 public void yourMethod() {
 YourServiceClass yourService = applicationContext.getBean(YourServiceClass.class); //
在这里可以使用yourService调用Service层的方法 
  }
 } 

然后,在调用自定义工具类的地方,需要手动传入ApplicationContext对象。例如:

public class YourCallerClass { 
public static void main(String[] args) { 
   ApplicationContext context = SpringApplication.run(YourApplication.class, args); YourCustomUtils utils = new YourCustomUtils(context); // 使用utils调用yourMethod()方法 } } 

以上是在Spring Boot中调用Service层方法的两种常见方式。你可以根据具体场景选择适合的方式来使用。希望对你有所帮助!

3、需要把工具类注入到ioc容器里面。

package com.util;

import com.entity.model.sys.SysUser;
import com.service.sys.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;

@Component
public class SecurityUtils {
    /**
     * 系统用户管理对象。
     */
    @Autowired
    private SysUserService userService;
    /**
     * 内部-系统用户管理对象。
     */
    private static SysUserService innerUserService;

    /**
     * 初始化。
     */
    @PostConstruct
    private void initialize() {
        SecurityUtils.innerUserService = this.userService;
    }

    /**
     * 获取当前请求对象。
     *
     * @return
     */
    public static HttpServletRequest getRequest() {
        try {
            return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        } catch (Exception ex) {
        }
        return null;
    }

    /**
     * 获取当前用户信息。
     *
     * @return
     */
    public static SysUser getSysUser() {
        HttpServletRequest _request = getRequest();
        if (_request != null) {
            return innerUserService.getLoginUserByRequest(_request);
        }
        return null;
    }
}

springboot自定义工具类中,如何调用service层方法_springboot 工具类调用service_全子兄的博客-CSDN博客

你可能感兴趣的:(spring,boot,后端)