Использование свойств конфигурации в классах @ConfigurationJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование свойств конфигурации в классах @Configuration

Сообщение Anonymous »

Ожидается ли, что классы свойств конфигурации можно будет использовать в классах @Configuration.

Среда
  • Spring Boot 2.0.2
  • версия Java «10.0.1» 17.04.2018
    Java(TM) SE Runtime Environment 18.3 (сборка 10.0.1+10),
    Java HotSpot(TM) 64-битная серверная виртуальная машина 18.3 (сборка 10.0.1+10, смешанный режим)
  • OSX 10.13.4
Мой код

application-local.properties:

Код: Выделить всё

s3.bucketName=test-bucket
Свойства конфигурации

Код: Выделить всё

@Validated
@ConfigurationProperties(prefix = "s3")
public class S3ConfigurationProperties {

@NotBlank
private String bucketName;

public String getBucketName() {
return bucketName;
}

public void setBucketName(final String bucketName) {
this.bucketName = bucketName;
}
}
Класс конфигурации

Код: Выделить всё

@Configuration
@Profile("local")
@EnableConfigurationProperties(S3ConfigurationProperties.class)
public class LocalS3Configuration {

@Autowired
private S3ConfigurationProperties properties;

@Value("${s3.bucketName}")
private String bucket;

@Bean(destroyMethod = "shutdown")
public AmazonS3 amazonS3(@Value("${local.s3.endpoint}") final String s3Endpoint, @Value("${s3.bucketName}") final String bucketName) {
// use properties...
final String bucketInjectedToMethod = bucketName; // works
final String bucketInjectedViaProperties = properties.getBucketName(); // null
final String bucketInjectedInClass = bucket; // null

}

}
Наблюдаемое поведение

Если я добавлю S3ConfigurationProperties в качестве поля в класс конфигурации или аргумента метода amazonS3, экземпляр будет ненулевым, но свойство BucketName внутри него будет нулевым.

Внедрение строки в класс через @Value также имеет значение null.

Единственный способ заставить ее работать — использовать аргумент метода, аннотированный как @Value, со строкой.

Это ожидаемое поведение или, возможно, ошибка?

Подробнее здесь: https://stackoverflow.com/questions/505 ... on-classes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»