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

Как упоминалось в предыдущих постах, вы можете определить свойства компонента и аргументы конструктора как ссылки на другие управляемые компоненты (соавторы) или как значения, определенные внутри строки. Для этого метаданные конфигурации на основе XML в Spring поддерживают типы подэлементов в своих элементах <property/> и <constructor-arg/>.

Прямые значения (примитивы, строки и т. д.)

Атрибут value элемента <property/> указывает аргумент свойства или конструктора в виде удобочитаемого строкового представления. Служба преобразования Spring используется для преобразования этих значений из строки в фактический тип свойства или аргумента. В следующем примере показаны различные устанавливаемые значения:

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <!-- результаты в setDriverClassName(String) вызове -->
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="username" value="root"/>
    <property name="password" value="masterkaoli"/>
</bean>

В следующем примере используется пространство имен p для еще более сжатой конфигурации XML:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close"
        p:driverClassName="com.mysql.jdbc.Driver"
        p:url="jdbc:mysql://localhost:3306/mydb"
        p:username="root"
        p:password="masterkaoli"/>

</beans>

Предыдущий XML более краткий. Однако опечатки обнаруживаются во время выполнения, а не во время разработки, если только вы не используете IDE (например, IntelliJ IDEA или Spring Tools for Eclipse), которая поддерживает автоматическое завершение свойств при создании определений компонентов. Такая помощь IDE настоятельно рекомендуется.

Вы также можете настроить экземпляр java.util.Properties следующим образом:

<bean id="mappings"
    class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">

    <!-- типизировано как java.util.Properties -->
    <property name="properties">
        <value>
            jdbc.driver.className=com.mysql.jdbc.Driver
            jdbc.url=jdbc:mysql://localhost:3306/mydb
        </value>
    </property>
</bean>

Контейнер Spring преобразует текст внутри элемента <value/> в экземпляр java.util.Properties с помощью механизма PropertyBeans JavaBeans. Это хороший ярлык, и это одно из немногих мест, где команда Spring одобряет использование вложенного элемента <value/> над стилем атрибута value.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки