someDataSource は単なる別の Bean になります。たとえば、次のようになります。
<bean id="someDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
ここでは、プロパティのプロパティ置換も使用しています。これは、次の Bean によって指定されます。
<context:property-placeholder location="classpath:properties/runtime.properties" />
コンテキストは別の xml 名前空間にあるため、以下を追加します。
xmlns:context="http://www.springframework.org/schema/context"
XML 名前空間に
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
Bean xml ドキュメント内の schemaLocation 文字列に追加します。
classpath:properties/runtime.properties
このプロパティ ファイルは、標準の Maven セットアップでは次の場所にあります。
src/main/resources/properties/runtime.properties
この runtime.properties ファイル内で、プレースホルダー (jdbc.driverClassName、jdbc.url など) を持つ各プロパティの値を定義する必要があります。この例は次のようになります。
jdbc.driverClassName=com.mysql.jdbc.Driver
データベースに MySQL を使用している場合。
一般的に言えば、コントローラーとリポジトリー (DAO) の間にサービス層が必要になる場合があります。その理由は、コントローラーがリクエストの処理と応答にのみ集中する必要があるためです。ビジネスロジックは、ビジネスオブジェクトなどを介して別のレイヤーで実行する必要があります。サービスレイヤーは、Webレイヤーとリポジトリレイヤーの間の仲介役として機能します。これは懸念事項を分離するだけでなく、物事を無限に単体テスト可能にし、Spring アプリケーションの大きな部分を占めます (少なくともそうあるべきです!)。
接続方法については、この Bean を Context にも挿入してみてください。
<context:component-scan base-package="xx.yy..." />
xx と yy はパッケージ名です。これにより、Spring はパッケージをスキャンして「コンポーネント」または @Controller オブジェクト、@Service、および @Repository (他にもいくつかありますが、知っておくべき主なものです) を検出します。この情報が Spring に提供されると、他の Bean に @Autowire Bean (依存性注入) を行うことができます。
例えば:
@Service
public class SomeServiceImpl implements SomeService
{
private SomeRepository someRepository;
@Autowired
public void setSomeRepository(SomeRepository someRepository)
{
this.someRepository = someRepository;
}
...
}
これにより、リポジトリがサービスに挿入され、そのリポジトリ メソッドにアクセスできるようになります。
もう 1 つの設計上のヒントとして、Spring では常にインターフェース用にプログラムします。開発の初期段階では、Hibernate リポジトリを実装したいと思うかもしれませんが、最終的には DBA がそれを嘲笑し、ストレート SQL を使用する JDBC リポジトリを必要とする可能性があるため、リポジトリに関しては特にそうです。このように、Hibernate ではなく JDBC アプローチを使用してリポジトリを実装し、Hibernate の代わりに JDBC リポジトリを注入するだけで済みます。
これで始められることを願っています!