Как я могу автоматически установить конфигурацию Spring в исполняемый файл Jar, используя Scala? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть простой Scala исполняемый файл jar, и я пытаюсь использовать инъекцию Spring Dependency для получения информации о конфигурации.

Я начинаю с основного класса следующим образом ...

object Main{
  def main ( args: Array[String] ) :Unit = {
    ...
  };
}

Кажется, что это работает нормально без конфигурации, поэтому я пытаюсь добавить конфигурацию. У меня есть простой application.yml, подобный этому

application
  username: ${MY_ENV_VAR}
  password: ${MY_OTHER_ENV_VAR}

Я пытаюсь реализовать это следующим образом ....

@Configuration
class ExportConfig {
  @Value("${application.username}")
  var username: String = _
  @Value("${application.password}")
  var password: String = _
}

@Component
class Export(){
  @Autowired
  var config: ExportConfig = _
  def doSomething(...): String = {
    val obj = new DoSomethingElse(
      config.username,
      config.password
    )
    ...
  }
}

А затем изменить исходный основной файл, чтобы он выглядел следующим образом. ..

object Main{
  def main ( args: Array[String] ) :Unit = {
    val export: Export = new Export();
    export.doSomething();
    ...
  };
}

Но конфиг всегда нулевой. Что мне не хватает? Как выполнить автоматическое подключение с помощью исполняемого файла Jar?

1 Ответ

0 голосов
/ 01 апреля 2020

Это то, что сработало для меня ...

// src/main/resources/application-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:beans="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.1.xsd">

    <context:component-scan base-package="my.package.where.export.is" />

</beans>

// Main 
def main ( args: Array[String] ) :Unit = {
    val ctx:ApplicationContext = new ClassPathXmlApplicationContext("application-context.xml");

    val exporter = ctx.getBean(classOf[Export])
    ...
}

Теперь он получает все свойства, которые я ожидал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...