Spring bean-конструктор-аргумент

<?xml version = "1.0" encoding = "UTF-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"
       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation = "http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"
       default-autowire = "byName"> 
     <bean name = "schedulerMap" class = "java.util.HashMap">
        <constructor-arg>
            <map>
                <entry key = "moBiScheduler" value-ref = "moBiScheduler"/>
                <entry key = "billJobScheduler" value-ref = "billJobScheduler"/>
            </map>
        </constructor-arg> 
    </bean>
 </beans>

Это часть XML.

В классе я хочу использовать @Autowired для ввода значения key='moBiScheduler' и key='billJobScheduler'.

@Autowired
private Map<String, Scheduler> schedulerMap;

Так. В чем вопрос ?

pvpkiran 13.04.2018 10:29
1
1
26
1

Ответы 1

Возможно, можно

  • autoriwre метод, который берет карту и выполняет некоторую фильтрацию и помещает правильные значения в schedulerMap.
  • Создайте еще один класс MapHolder, который расширяет Map (это необязательно) и реализует ApplicationContextAware. после внедрения ApplicationContext вы можете получить schedulerMap и выполнить некоторую фильтрацию и указать правильное значение на вашей карте, а затем ввести эту карту
  • вы также можете использовать BeanPostProcessor

Другие вопросы по теме