Struts2、Spring、iBATIS で勤務管理サイトを
勉強の為に作成しているのですが、どうしても
わからないエラーが発生してしまい、質問させて
いただきました。
【事象】
・eclipseよりサーバでの実行を起動させた際ですが、
@ResourceでDAOのBeanを注入時にエラーが発生してしまいます。
※@Resourceを外せば当事象のエラーは発生しませんでした。
【applicationContext.xml】抜粋
<bean id="splMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean" scope="singleton">
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="loginDao" class="login.LoginDao" scope="singleton">
<property name="splMapClient" ref="splMapClient"></property>
</bean>
【sqlMapConfig.xml】
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dt …
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
statementCachingEnabled="true"
enhancementEnabled="true"
classInfoCacheEnabled="true"
lazyLoadingEnabled="false"
/>
<sqlMap url="file:c:/eclipse/workspace/tiles/WebContent/WEB-INF/sql/login.xml" />
</sqlMapConfig>
【Login.java】
package login;
import java.util.Map;
import javax.annotation.Resource;
import jp.co.hershe.struts2.util.Struts2Action;
import com.opensymphony.xwork2.ActionSupport;
@Struts2Action("Login")
public class Login extends ActionSupport {
private static final long serialVersionUID = 1L;
@Resource
private LoginDao loginDao;
@Override
public String execute() throws Exception {
(もろもろ処理が入ります)
}
}
【エラーログ】
情報: Loaded JDBC driver: oracle.jdbc.driver.OracleDriver
2009/06/26 1:05:28 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
情報: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@269997: defining beans [org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,Login,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,login,transactionManager,dataSource,TransactionInterceptor,splMapClient,loginDao]; root of factory hierarchy
2009/06/26 1:05:28 org.springframework.web.context.ContextLoader initWebApplicationContext
致命的: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.InvalidPropertyException: Invalid property 'splMapClient' of bean class [login.LoginDao]: No property 'splMapClient' found
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at
……
==================================================
sqlMapClientのあたりで記述がおかしいのかと思いまして
見直しや検索などしてみたのですが、わからず、、
わかる方いらっしゃいましたらご教授ください。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
ただのtypoだと思います。
splMapClient(えすぴーえる)ではなく、sqlMapClient(えすきゅーえる)ではないでしょうか?
この回答への補足
すいません。。
勉強の為にご教授いただきたいのですが、
ちなみに、applicationContext.xmlで指定して
いるBean idのsqlMapClientというのは固定で
どこかに定義されているものなのでしょうか、、
※クラス名の頭文字を小文字にしたidを定義
する決まりがどこかに記載されているので
しょうか?
applicationContext.xml内では、誤った
「splMapClient」で一致していたので問題
無いのかな、、と思っていたのが問題でした。。
度々で申し訳ありませんが、ご存知でしたら
教えてください。
No.3
- 回答日時:
きちんと動作したようで何よりです。
下の補足の件ですが、Idは自由につけて問題ありません。
今回問題になったのは下記の記述のproperty="splMapClient"です。
<bean id="loginDao" class="login.LoginDao" scope="singleton">
<property name="splMapClient" ref="splMapClient"></property>
</bean>
Daoはあるクラスを継承して作成していますよね?
そのクラスにはsetSqlMapClientというメソッドがあるはずです。最初の記述のままですと、
loginDao.setSplMapClient(refで記述したBean)
という意味になるのでそんなSetterは無くてエラーになったというわけです。
property name="sqlMapClient"と修正するだけで動くはずです。
ご回答いただきありがとうございます。
DaoはSqlMapClientDaoSupportクラスを継承
していました(APIも確認しました)。
propertyのnameとrefについて理解いたしました。
この度は本当にありがとうございました。
No.1
- 回答日時:
私もこの構成(Struts2/Spring/iBatis)で自分なりのフレームワーク作ってますよ
Invalid property 'splMapClient' of bean class [login.LoginDao]: No property 'splMapClient' found
と言われているので、LoginDao のフィールドに splMapClient がないか、
そのsetterがないとかではないでしょうか?
回答いただきありがとうございます。
tamtam180さんのご指摘のあった箇所を修正した
ところ動きました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- ASP・SaaS FC2 BLOG <AUDIO TAGを入れプレビューはOk テーンプレートを更新すると ✖ 1 2023/08/14 11:40
- Ruby vscode 文字化け 1 2022/05/21 19:17
- TOEFL・TOEIC・英語検定 With its architecture and gardens and a wealth of 0 2022/12/17 16:11
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングの問題です。大...
-
配列にnullを代入すると、null...
-
自作Androidアプリのデータ引き...
-
jdk17.06のインストーラーが起...
-
コンソールから所属財産を入力(...
-
変数名とDBカラム名の関係性に...
-
質問です。 配列が100以上の場...
-
キー入力について
-
プログラミング教えてください。
-
CSV出力を画面から選択したデー...
-
1画面をテストすることを単体テ...
-
list の空は [] ってあわらすのに
-
下記問題の答えが"D"になる意味...
-
JaneStyleのスレッドが見れなく...
-
マイクラでPythonのプログラミ...
-
デバッグツールの具体例を教え...
-
えハミルトン路と全域木のちが...
-
ショートカットキーについて
-
あんまりお料理しないのに台所...
-
次のhtml・cssでspan内の文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
配列にnullを代入すると、null...
-
マイクラでPythonのプログラミ...
-
Eclipse 動的プロジェクトで404...
-
えハミルトン路と全域木のちが...
-
jdk17.06のインストーラーが起...
-
改行含むテキストの表示の仕方
-
下記問題の答えが"D"になる意味...
-
JaneStyleのスレッドが見れなく...
-
キー入力について
-
eclipseで作ったプログラムを他...
-
リレーションエンティティクラ...
-
「main メソッドを持つクラスが...
-
デバッグツールの具体例を教え...
-
eclipse実行ができない
-
自作Androidアプリのデータ引き...
-
正規表現について質問です。 カ...
-
CSV出力を画面から選択したデー...
-
プログラミングのプの字も知り...
-
コンソールから所属財産を入力(...
おすすめ情報