【问题标题】:Helper Class Spring Boot with Environment Values [duplicate]具有环境值的帮助程序类 Spring Boot [重复]
【发布时间】:2021-05-14 16:04:03
【问题描述】:

我想创建一个辅助类,但它失败了.. 错误:java.lang.NullPointerException: null

当我在不创建静态类(自动装配)的情况下执行此操作时,它可以毫无问题地工作。但它是一个辅助类,我认为静态类更好。

感谢您的帮助

Helper.java

public final class UrlHelper {
    
    @Autowired
    private static Environment bean;
    
    public static String method(String projet) {    
        return "titi"+ bean.getProperty("property.name");
    }
}

在我的服务中,我是这样使用它的:

String list = getRequest.getHTTPRequest(UrlHelper.method(projet));

【问题讨论】:

标签: java spring-boot helper


【解决方案1】:

在 Spring 中,@Autowired 注释允许您解析 beans 并将其注入其他 beans。在您的情况下,UrlHelper 类不是 bean,因此,您的 Environment 未注入(保持 null),因此出现错误。你有两个选择:

  1. 使用@Component@Service 等使UrlHelper 成为一个bean。这将使您的类成为非静态类。
  2. 保持UrlHelper 静态,并将Environment 作为参数传递。我相信这是更正确的方法。环境可以注入到调用静态方法的类中。

【讨论】:

  • 2 。如果我注入环境作为参数,它并不比在我的服务中使用环境更好.. :(
  • 是的。从设计的角度来看,当提供环境实例时,您的助手类“帮助”您做某事是有道理的。这允许该类在您提供的任何环境上工作,使其更加通用(作为辅助类应该如此)。
  • 我希望环境留在助手类中,而不是从服务中注入它(因为助手会帮助我构建数百个 url)
  • 那么你别无选择,只能使用 1. 将你的帮助类设置为 bean,并从其方法中删除“static”关键字。您只能在 bean 中注入您的环境。
猜你喜欢
  • 2018-05-01
  • 2011-04-20
  • 1970-01-01
  • 2018-03-15
  • 2019-02-01
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 2019-12-04
相关资源
最近更新 更多