Hibernate + Spring MVC: библиотека внешних объектов - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть два разных приложения (site + некоторая утилита cron), которые используют одни и те же объекты базы данных.Я переместил их в отдельную библиотеку, а в приложениях оставил только файлы hibernate.configuration.

Теперь проблема в том, что у меня есть какая-то служба уведомлений по электронной почте, которая использует JavaMailSender, и у нее есть свойства, определенные в файле конфигурации Spring:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="mail.xxx.com" />
        <property name="username" value="xxx" />
        <property name="password" value="xxx" />
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.smtp.ssl.trust">*</prop>
            </props>
        </property>
    </bean>
    <bean id="notificationsService" class="de.crm.NotificationsService">
        <property name="sender" ref="mailSender" />
        <property name="properties" ref="notificationsServiceProperties" />
    </bean>
    <bean id="notificationsServiceProperties" class="de.crm.objects.properties.NotificationsServiceProperties">
        <property name="name" value="xxx" />
        <property name="email" value="xxx" />
    </bean>

Так что главная проблема здесь в том, что она не можетсм. de.crm.objects.properties.NotificationsServiceProperties класс, так как он определен во внешней библиотеке, и проект не выполняется при экспорте.

Есть ли способ оставить класс свойств во внешней библиотеке и исправить его?Спасибо

UPD # 1: можно ли использовать объекты из внешней библиотеки Spring с аннотацией @Autowired?

Ответы [ 2 ]

1 голос
/ 01 февраля 2012
So the main problem here that it can't see de.crm.objects.properties.NotificationsServiceProperties class because

он определен во внешней библиотеке, и проект не выполняется при экспорте.

Spring не может распознать класс / библиотеку, если он не включен в путь к классам проекта.Поэтому вам нужно убедиться, что ваша библиотека, внутренняя или внешняя, включена в classpath.

UPD#1: Is it possible to use objects from external library Spring's with @Autowired annotation?

@ Autowired предоставляет только те объекты, которые присутствуют в контексте Spring.Если класс находится вне контекста Spring, даже если он включен в classpath, он не будет распознаваться @ Autowired.

EDIT

Сначала добавьте класс (например, foo.Bar) к вашему пути к классам.

Во-вторых, добавьте новое определение bean-компонента в конфигурацию пружины xml:

<bean class="foo.Bar"></bean>

Теперь вы можете получить доступ к этому объекту с помощью @Autowired:

public class SomeOtherClassInSpringContext {
    @Autowired
    Bar myBar;
}

PS ЕслиВы еще этого не сделали, вам также необходимо применить <context:annotation-config/> и <context:component-scan base-package="path.to.your.classes"/>, чтобы сообщить Spring, что вы настроили некоторые из ваших классов с аннотациями.

Для получения дополнительной информации см. Spring Docs .

0 голосов
/ 01 февраля 2012

Если я правильно понял, вы должны поместить JAR, содержащий ваши внешние классы, в путь к классам вашего приложения.Тогда ваш класс будет виден в контексте Spring.Это то, что мы делаем, например, для настройки источника данных.В общем, Spring может обрабатывать каждый класс на вашем пути к классам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...