Хобрук: Ваш путь к мастерству в программировании

Spring: внедрение конструктора примитивных значений (свойств) с конфигурацией на основе аннотаций

Я пытаюсь настроить класс с конфигурацией на основе аннотаций в Spring 3, которая принимает примитивные значения в качестве аргументов конструктора:

@Component
class MyBean {
  MyBean(String arg1, String arg2) {
    // ...
  }
}

И такой контекст приложения:

<beans [...]>
  <context:component-scan base-package="com.example" />
  <context:property-override location="/WEB-INF/example.properties" />
</beans>

Я пытаюсь найти способ указать, что аргументы конструктора должны быть взяты из файла свойств. По-видимому, это работает с конструкторами, которые принимают обычные bean-компоненты (например, MyClass(Bean bean1, OtherBean bean2)), но только свойства?

Я также пробовал аннотировать аргументы конструктора с помощью аннотации @Value Spring 3 и выражения EL для значения, например @Value("#{prop.Prop1}") arg1, но это тоже не работает.


Ответы:


1

Следующий код отлично работает с <context:property-placeholder .../>:

@Component 
public class MyBean { 
    @Autowired
    public MyBean(@Value("${prop1}") String arg1, @Value("${prop2}") String arg2) { 
        // ... 
    } 
} 

Но <context:property-override .../> - вещь очень специфическая, здесь она не годится.

21.02.2010
  • Будет ли в файле свойств myBean.prop1 = foo или просто prop1 = foo? То есть свойства ограничены именем bean-компонента? 22.02.2010
  • Файл свойств будет иметь prop1=foo. Если нужно myBean.prop1=foo, напишите @Value("${myBean.prop1}"). Так работает <context:property-placeholder .../>. 22.02.2010
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..