先にhibernate-spring.xmlにDAO関連の記述の説明をしましたが、ちょっとSpringでやったことをまとめておきます。
beans.xmlはXDocletから自動生成されるけど、SpringのdataSourceやsessionFactoryなどはXDoclet向けの記述を書く場所がわからなかったので、とりあえずhibernate-spring.xmlってファイルを作って読み込ませることにしました。ちなみに、複数のファイルを読み込ませるにはweb.xmlで以下の内容を記述しておきます。
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/beans.xml, /WEB-INF/classes/hibernate-spring.xml </param-value> ここは一行で。 </context-param>
ちなみにこのようなソースファイルに記述するものではないモノについては、XDocletのマージファイル web-settings.xmlに書いておきます。
とりあえず、要件や発生した課題は以下の感じです。
<mapping class="nu.mine.kino.rss.hibernate.Rss" />をhibernate-spring.xmlで書く書き方がわからない
いろいろ調べて以下のように行くことにしました。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- WEBコンテナのDataSourceを使う設定 --> <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jdbc/MySqlDS</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource" /> </property> <property name="configLocation"> <value>/WEB-INF/hibernate.cfg.xml</value> <!-- Mappingクラスだけ既存ファイルに書く --> </property> <property name="configurationClass"> <value>org.hibernate.cfg.AnnotationConfiguration</value> </property> </bean> </beans>このファイルはsource直下など、クラスパスが通っているところに置いておきます。指定されている/WEB-INF/hibernate.cfg.xmlは
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <mapping class="nu.mine.kino.rss.hibernate.Rss" /> </session-factory> </hibernate-configuration>とAnnotationが書いてあるクラスファイルを指定しました。
その他のJavaBeans?に関しては、XDocletを使ってEclipse上で自動生成するようにしています。XDocletで生成されるファイルはbeans.xmlとしました。たとえばPingClient?だったら、クラスコメントに
/** * PingサーバにweblogUpdates.pingを打つクライアントです。 * @spring.bean id = "pingClient" */
んで、エンドポイントを決めるセッターメソッドに
/** * @spring.property list = * "http://localhost:8080/PingWeb/PingReceiver, * http://ping.cocolog-nifty.com/xmlrpc, * http://ping.bloggers.jp/rpc/, * http://www.blogpeople.net/servlet/weblogUpdates, * http://ping.myblog.jp" */ ↑ 実際は改行しない public void setEndpointURLList(List endpointURLLis this.endpointURLList = endpointURLList; }
と書いておきます。すると以下のようなbeans.xmlが生成されます。
<bean id="pingClient" class="nu.mine.kino.ping.PingClient" > <property name="endpointURLList"> <list> <value>http://ping.cocolog-nifty.com/xmlrpc</value> <value>http://localhost:8080/PingWeb/PingReceiver</value> <value>http://ping.bloggers.jp/rpc/</value> <value>http://www.blogpeople.net/servlet/weblogUpdates</value> <value>http://ping.myblog.jp</value> </list> </property> </bean>
この記事は
現在のアクセス:7358