2012-02-01 19 views
0

同じデータベースオブジェクトを使用している2つの異なるアプリケーション(サイト+一部のcronユーティリティ)があります。別のライブラリに移動し、アプリケーションではhibernate.configurationファイルだけを残しました。Hibernate + Spring MVC:外部オブジェクトライブラリ

<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を見ることができない。

さて、問題は、私はJavaMailSender使用して、いくつかの電子メール通知サービスを持って、それが春のコンフィギュレーション・ファイルで定義された性質を持っているということです.objects.properties.NotificationsServicePropertiesクラスは外部ライブラリで定義されているため、プロジェクトはエクスポート時に失敗します。

外部ライブラリにプロパティクラスを残して修正する方法はありますか? ありがとうございます

UPD#1:外部ライブラリのSpringのオブジェクトを@Autowiredアノテーションで使用することはできますか?

+1

外部パスはビルドパスに追加されるのか、クラスパスに配置された外部パスです(読み込むことができます)。 – Rocky

+0

ビルドパス設定で外部ライブラリとして外部jarファイルを追加しました – nKognito

答えて

1
So the main problem here that it can't see de.crm.objects.properties.NotificationsServiceProperties class because 

それは外部のライブラリで定義されており、プロジェクトが輸出で失敗している...あなたのクラスパス上のすべてのクラスを扱うことができます。

プロジェクトのクラスパスに含まれていない場合、Springはクラス/ライブラリを認識できません。そのため、内部または外部のライブラリがクラスパスに含まれていることを確認する必要があります。

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

のみばねコンテキスト中に存在するこれらのオブジェクトを供給する@Autowired。クラスがSpringコンテキスト外にある場合、クラスパスに含まれていても@Autowiredでは認識されません。

EDIT

まず、あなたのクラスパスに(たとえば、foo.Bar)クラスを追加します。

第二に、あなたの春の構成XMLに新しいBean定義を追加:今すぐ

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

、あなたが使用してこのオブジェクトにアクセスすることができ@Autowired:

public class SomeOtherClassInSpringContext { 
    @Autowired 
    Bar myBar; 
} 

P.S.これをまだ行っていない場合は、と<context:component-scan base-package="path.to.your.classes"/>を適用する必要があります。これは、春にあなたのクラスの一部に注釈を設定したことを伝えるためです。

詳細については、Spring docsを参照してください。

+0

外部コンテキストをSpringコンテキストに追加する方法はありますか? – nKognito

+0

更新された回答を確認してください。 – craftsman

+0

ああ、私はすでにそれをしました:)私は問題を解決しました。 WEB-INF/lib /ディレクトリに外部jarファイルを追加するだけです。プロジェクトの設定で外部ライブラリとしてこのjarファイルを追加する必要はありません。ありがとうございました – nKognito

0

私が正しく理解したら、外部クラスを含むJARをアプリケーションのクラスパスに配置する必要があります。あなたのクラスは、Springのコンテキストで可視になります。 たとえば、データソースを設定するために行うことです。 は、一般的に、春は

+0

どういう意味ですか?外部ライブラリとしてこのjarファイルを追加しますか?私はすでにそれをやった、助けていない – nKognito

関連する問題