Вопрос по spring – Как получить значение свойства из объекта ApplicationContext? (без использования аннотации)

37

Если у меня есть:

@Autowired private ApplicationContext ctx;

Я могу получить бины и ресурсы, используя один из методов getBean. Однако я не могу понять, как получить значения свойств.

Очевидно, я могу создать новый бин, который имеет свойство @Value, например:

private @Value("${someProp}") String somePropValue;

Какой метод я вызываю для объекта ApplicationContext, чтобы получить это значение без автоматической передачи компонента?

Я обычно использую @Value, но есть ситуация, когда выражение SPeL должно быть динамическим, поэтому я не могу просто использовать аннотацию.

Error: User Rate Limit Exceeded Todd Murray

Ваш Ответ

3   ответа
15

${someProp}

@Component
public class PropertyHolder{

    @Value("${props.foo}") private String foo;
    @Value("${props.bar}") private String bar;

    // + getter methods
}

Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededPropertyHolderError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
44

somePropValue = ctx.getEnvironment().getProperty("someProp");
Error: User Rate Limit Exceeded
9

Error: User Rate Limit Exceeded

somePropValue = ctx.getBeanFactory().resolveEmbeddedValue("${someProp}");

Похожие вопросы