java—将值从另一个项目传递到库的变量

2izufjch  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(182)

我有一个spring-boot应用程序,它使用我的库(库中也有spring-boot元素)。在我的库中,有一个类使用.yml文件中定义的值。my library的代码布局如下:
我的应用程序.yml

uni:
  name: someName
  lang: Java
  size: 32

库类.java

// some imports go here

@Component
public class MyLibClass {
   private String name
   private String lang
   private int size

   public MyLibClass (@Value("${uni.name}" String name,
                      @Value("${uni.lang}" String lang
                      @Value("${uni.size}" int size){

       this.name = name
       this.lang = lang
       this.size = size
   }

   public String action() {
     // Something is happening here with fields defined above
   }

   // More methods defined here
}

现在,虽然一切正常,我希望能够改变 name , lang 以及 size 来自使用这个库的项目的值(我的想法是我想传递不同的参数给所说的变量,而不需要手动更改库中的.yml文件)。为了澄清,我的库被发布到nexus,并作为依赖项添加到我的项目中。
我最初的想法是从我的库中删除.yml文件,并将其添加到我的项目中。然后我会取代 @Value("${uni.name}")@Value("#{enviroment.uni.name}") 在我的图书馆里。但这并没有完全奏效。
我还使用本文从我的库中自动连接bean。因此,我将以下类添加到我的库中:

package com.project1.uni.sharedConfig;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.project1.uni")

public class SharedBeansConfig { }

也许我可以在这里添加一些东西,允许我从项目中更改库中.yml文件的变量?
我唯一没有尝试过的事情(主要是因为我希望有更好的解决方案)是在我的类中添加setter和getter,并在我的项目中使用它们。我只是觉得我错过了一个非常简单的解决方案,我想用它来代替(没有理由,个人喜好)。
我没有任何错误。相反,如果从库中删除.yml文件并将其放入项目中,则变量的值为空。
更新
经过一番反复试验,getter和setter并没有完全起作用。然而,我发现这个视频几乎做我需要的。我唯一搞不清楚的是.yml文件的路径(我可以添加一个硬编码字符串,该字符串将指向我的项目的.yml文件,但我也希望将所述库用于多个项目,因此我需要一些方法让库自动看到正确项目的.yml文件)。下面是一个更新的问题(受视频影响):
我有一个项目p和库l。项目p通过添加l作为依赖项来使用库l。图书馆l需要有一个指向p的.yml文件的路径。我该如何编码l来生成正确的路径,来完成视频中描述的事情?我想加上 "~/myapp.yml 但如果有多个myapp.yml将无法工作。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题