2015-04-08 5 views
0

Я работаю с Spring, и я хочу инициировать мое обслуживание (модель) с помощью dependecy injection. Моя служба ожидает объект Propertie, содержащий параметры url, user, password, ssl, sslfactory для базы данных. Я увлекался, если это все еще можно было сделать с помощью инъекции зависимостей.Инъекционные свойства с пружиной?

Так что мой конструктор выглядит следующим образом: Service(Properties propertie) Внутри моего контроллера я получил услугу личного поля:

@Autowired 
private Service service; 

А теперь я хочу, чтобы ввести правильные свойства в нем.

<bean id="service" class="service.Service"> 
     <constructor-arg > 
      <value>?</value> 
     </constructor-arg> 
    </bean> 

Я не знаю, можно ли это сделать, может ли кто-нибудь мне помочь? Заранее спасибо.

+0

Вы используете только подход xml? –

+0

Да, я так думаю, что еще я могу использовать? (Я новичок в Spring) – Bosiwow

+0

В качестве альтернативы конфигурации xml вы можете использовать аннотации и @Autowired с помощью для управления зависимостями. Пожалуйста, взгляните на весенние документы, это красиво написано. –

ответ

0

Попробуйте это:

<util:properties id="props" location="classpath:props.properties" /> 

, а затем:

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

Это вдохнет свойство непосредственно в поле. Вам нужно будет использовать конфигурацию аннотаций.

Или, если вы предпочитаете чистый XML, попробуйте следующее:

<bean id="service" class="service.Service"> 
    <constructor-arg > 
     <value>#{props['foo']}</value> 
    </constructor-arg> 
</bean> 
+0

Попробуй это :) и выберите правильный ответ, как только он работает. – Bosiwow

+0

# {props ['foo']}, на что указывает foo? А также, где должен находиться файл database.properties? Uder web.xml? – Bosiwow

+0

Это указывает на объект свойства с идентификатором id «реквизит» на имя свойства foo, которое должно быть расположено в любом месте пути classpath. Например, в папке WEB-INF/classes. Или в src/resources, если вы используете maven. –

0

Правильный способ сделать это с помощью PropertyPlaceholderConfigurer.

Смежные вопросы