[Java][Spring] Spring3でDIしてみる!(アノテーション使用)
Spring3を使って、一番基本的な形のプログラムを作成してみます。
今回は、アノテーションを使ってクラス内部に属性を付与することで、面倒なcontextを書かない方法で解説しています。
また、記事執筆時点では、なぜかSpringの公式サイトからjarがダウンロードできなくなっていました。
「Mavenでやれ」とのことでしたので、今回はそれで。。
●Mavenプロジェクトの作成
まずは、Mavenプロジェクトを作成します。
上部メニューから「ファイル>新規>Mavenプロジェクト」を選択します。
「シンプルなプロジェクトの作成」にチェックを入れて「次へ」ボタンを押下します。
以下を入力して「完了」ボタンを押下します。(実際意味があるのはアーティファクトIDくらいです。。)
グループID:test.spring3
アーティファクトID:TestSpring3
名前:test.spring3
「TestSpring3」プロジェクトが作成されます。
pom.xmlというファイルが出来ていますので、以下記述を貼り付けます。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.5.RELEASE</version>
</dependency>
</dependencies>
また、springモジュールが自動的にダウンロードされます。
次に、モジュールを作成します。
①Javaモジュール
パッケージ:test.spring3
モジュール:App.java、TestService.java
②SpringContext
階層:META-INF/sprng
モジュール:app-context.xml
●App.java
package test.spring3;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
@Component // Springコンテナに管理対象であることを明示
public class App {
@Autowired // Springコンテナが「TestService」を自動設定することを明示(privateでも可能)
private TestService service = null;
public void execService(){
service.exec();
}
public static void main( String[] args ){
// Springコンテナ取得
ApplicationContext appContext =
new ClassPathXmlApplicationContext("classpath:./META-INF/spring/app-context.xml");
// SpringコンテナからAppクラスのオブジェクトを取得
App app = appContext.getBean(App.class);
// appを実行
app.execService();
}
}
●TestService.java
package test.spring3;
import org.springframework.stereotype.Component;
@Component // Springコンテナに管理対象であることを明示
public class TestService {
public void exec(){
System.out.println("exec()が実行されました。");
}
}
●app-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- test.spring3パッケージ以下を検索対象とする設定 -->
<context:component-scan base-package="test.spring3" />
</beans>
app-context.xmlの「component-scan」設定により、「@component」アノテーションが付いている二つのクラスが検索されます。
その後、mainメソッド実行時にSpringコンテキストからApp.javaのインスタンスを取り出すと、メンバーのTestServiceに自動的にオブジェクトが設定された状態となります。
最後に、プログラムを実行すると以下のように表示されると思います。
(おわり)
スポンサードリンク
関連記事
-
[Java] クラスとインスタンス
こんにちは。 クラスとインスタンスについて解説します。 インスタンスは「オブジェクト」とも言
-
[Java] StringBuilderの使い方(Stringを連結するクラス)
今回は、可変長文字列クラスのStringBuilderを紹介します。 固定長文字列クラスのSt
-
[Java] 日付の計算方法(DateFormat、Date、Calendar)
こんにちは、kei0310です。 Javaで日付を計算する方法について解説します。 まず
-
[Java] Apache POIでExcel操作!
Apache POIをまずは使ってみようという方(自分も含め)のメモ 導入 Maven htt
-
[Java] 文字列の分割(split)
こんにちは。 今回は、文字列の分割について解説します。 昔はStringTokenize
-
[Java][Spring] DIする方式を細かく見てみる① @ScopeでのSingletonとPrototypeの指定
今回は@Scopeアノテーションを用いて、オブジェクトをDIする方式を選択してみます。 ●解説
-
[Java][Jersey] JerseyでRESTfulなJAX-RS Webサービス作成
こんにちは、keiです。 今回はRESTfulなWeb Serviceの作成を行っていきます。
-
[Java][JSP] EclipseでのJSP作成
今回は、Eclipseを用いてJSPを作成してみます。 まず、Eclipseを起動します。
-
[Java][基本] ループ処理(for文)
Javaのループ処理の基本である、for文を解説します。 ●文法 for( [①初期化];
-
[Java] Javaのインストール(プログラム開発・入門用)
Javaのコードを書きたい!! という目的のためのJavaのインストール方法と、コマンドラインでの