4

次のWebサイトでサンプルアプリケーションを試しています。

JSF 2、PrimeFaces 3、Spring 3、Hibernate4統合プロジェクト

しかし、プロジェクトを実行すると、次のようになります。

重大:コンテキスト初期化イベントをクラスorg.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationExceptionのリスナーインスタンスに送信する際の例外:ServletContextリソース[/ WEB-INF/applicationContextで定義された「UserService」という名前のBeanの作成中にエラーが発生しました.xml]:Beanプロパティ'userDAO'の設定中に、Bean'UserDAO'への参照を解決できません。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:ServletContextリソース[/WEB-INF/applicationContext.xml]で定義された「UserDAO」という名前のBeanの作成中にエラーが発生しました

ただし、applicationContext.xmlファイルでは、関連するコードは次のとおりです。

<!-- Beans Declaration -->
<bean id="User" class="com.otv.model.User"/>

<!-- User Service Declaration -->
<bean id="UserService" class="com.otv.user.service.UserService">
  <property name="userDAO" ref="UserDAO" />
</bean>

<!-- User DAO Declaration -->
<bean id="UserDAO" class="com.otv.user.dao.UserDAO">
 <property name="sessionFactory" ref="SessionFactory" />
</bean>

<!-- Session Factory Declaration -->
<bean id="SessionFactory"    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
 <property name="dataSource" ref="DataSource" />
 <property name="annotatedClasses">
  <list>
   <value>com.otv.model.User</value>
 </list>
</property>
<property name="hibernateProperties">
 <props>
  <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  <prop key="hibernate.show_sql">true</prop>
 </props>

クラスは関連するパッケージに存在し、以下とさまざまな構成ファイルの場所を確認できます。

ここに画像の説明を入力してください

チュートリアルとその実装の違いは、EclipseではなくNetBeans7.2を使用していることだけです。

これがなぜであるかについて誰かが何か考えがありますか?

4

3 に答える 3

0
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UserService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'UserDAO' while setting bean property 'userDAO';

これは、プロパティ定義が欠落しているため、UserServiceを作成できないことを示しています。

 nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UserDAO' defined in ServletContext resource [/WEB-INF/applicationContext.xml]

これは、UserDAOの定義が見つからないことを示しています。

UserDao定義がありません。refは、そのタイプである必要があることを意味しますが、それでもBean定義が必要です。

基本的に、「ref」を使用するときはいつでも、そのタイプのプロパティを作成するようにSpringに指示しています。そのタイプは、独自のBean定義で定義する必要があります。

したがって、UserDaoが「ref」によって再び定義される他のプロパティを使用する場合、そのプロパティには独自のBean定義も必要になります。

クラスと春の定義は、2つの完全に別個のエンティティであると考える必要があります。クラスはそこにあり、必要な場所に配置されている可能性がありますが、Springはそれらを呼び出すためにBean定義を必要とします。呼び出すパッケージ/クラスを具体的に指定しない限り、UserDaoまたはSessionFactoryが何であるかはわかりません。

于 2013-01-02T15:07:28.667 に答える
0

そのエラーの主な原因を見つけました。それは実際には非常に単純です。

クラスでは、フィールドの上に注釈com.otv.model.Userはありません。@Idid

何が間違いだったのかを突き止めるための答えへのリンクは次のとおりです。hibernate exception: org.hibernate.AnnotationException: No identifier specified for entity: com..domain.idea.MAE_MFEView

于 2016-03-18T15:43:06.803 に答える
0

/WEB-INF/applicationContext.xml<bean id="UserDAO" class="com.otv.dao.UserDAO">...</bean>プロパティが使用されるバックエンド システムに大きく依存するようなエントリを含める必要があります。

また、インスタンスはDAOから取得するか、プログラムで作成する必要があるため、 UserBeanは不適切なコピーであり、過去のものであると思われます。User

Netbeans ではなく Eclipse で機能する理由については、奇妙すぎて真実ではありません。混み具合もあるはず…

于 2013-01-02T15:16:03.447 に答える