[Java][Spring] Spring3でDIしてみる!(アノテーション使用)

公開日: : Java , , ,

Spring3を使って、一番基本的な形のプログラムを作成してみます。

今回は、アノテーションを使ってクラス内部に属性を付与することで、面倒なcontextを書かない方法で解説しています。

また、記事執筆時点では、なぜかSpringの公式サイトからjarがダウンロードできなくなっていました。
「Mavenでやれ」とのことでしたので、今回はそれで。。

●Mavenプロジェクトの作成

まずは、Mavenプロジェクトを作成します。

上部メニューから「ファイル>新規>Mavenプロジェクト」を選択します。
Spring3導入01

「シンプルなプロジェクトの作成」にチェックを入れて「次へ」ボタンを押下します。
Spring3導入02

以下を入力して「完了」ボタンを押下します。(実際意味があるのはアーティファクトIDくらいです。。)
グループID:test.spring3
アーティファクトID:TestSpring3
名前:test.spring3
Spring3導入03

「TestSpring3」プロジェクトが作成されます。
pom.xmlというファイルが出来ていますので、以下記述を貼り付けます。

<dependencies>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>3.2.5.RELEASE</version>
  </dependency>
</dependencies>

貼り付け後は、以下のようになっているいるはず。
Spring3導入04

また、springモジュールが自動的にダウンロードされます。
Spring3導入05

次に、モジュールを作成します。
①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に自動的にオブジェクトが設定された状態となります。
Spring3導入06

最後に、プログラムを実行すると以下のように表示されると思います。
Spring3導入07

(おわり)

スポンサードリンク

関連記事

no image

[Java] 文字列の分割(split)

こんにちは。 今回は、文字列の分割について解説します。 昔はStringTokenize

記事を読む

no image

[Java][JSP] EclipseでのJSP作成

今回は、Eclipseを用いてJSPを作成してみます。 まず、Eclipseを起動します。

記事を読む

no image

[Java][Eclipse] Mavenが利用可能な動的Webプロジェクトの作成

こんにちは、keiです。 今回は、Mavenが利用可能な動的Webプロジェクトの作成について解

記事を読む

no image

[Java][基本] ループ処理(for文)

Javaのループ処理の基本である、for文を解説します。 ●文法 for( [①初期化];

記事を読む

no image

[Java][Servlet][JSP] ServletからJSPへの転送

こんにちは。 今回は、「Servletでリクエストを受けて、JSPで表示する。」方法を解説しま

記事を読む

no image

[Java] Javaのインストール(プログラム開発・入門用)

Javaのコードを書きたい!! という目的のためのJavaのインストール方法と、コマンドラインでの

記事を読む

no image

[Java][Framework] Spring BootのJPAでDB接続した際のEntityキャッシュのクリア方法

Spring BootのJPAでDBアクセスした際に、処理を一定量こなすと、Heapが足りなくな

記事を読む

no image

[Java][Framework] Spring Bootを使って、Spring MVC速攻開発してみる!(DB接続あり)

STSインストール STSは、EclipseにSpring関連のいろいろな機能を詰め込んだオールイ

記事を読む

no image

[Java][基本] mainメソッドの書き方

こんにちはkeiです。 Javaの基本として、意外と知らないmain関数について解説します。

記事を読む

no image

[Java][Spring] DIする方式を細かく見てみる① @ScopeでのSingletonとPrototypeの指定

今回は@Scopeアノテーションを用いて、オブジェクトをDIする方式を選択してみます。 ●解説

記事を読む

スポンサードリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スポンサードリンク

no image
CentOSにdockerをインストールしてみた

前置き dockerをcentos7にインストールしてみました

no image
awkでのgsubを使った文字列置換(正規表現)

まえおき bashなどのシェルスクリプトで、lsした結果とかを

no image
bashで並列処理する方法(xargs)

並列処理とは 通常、意識せずにプログラムを書くと、大体の場合は

no image
AWS Redshiftの使用ストレージ容量をクエリで調べる方法

用途 AWS Redshfitのコンソールを見れば、使用中のス

no image
pythonでstorage transfer serviceを使ってみた。

準備 pythonのインストールとかする。 このあたり。

→もっと見る

  • 2022年11月
     123456
    78910111213
    14151617181920
    21222324252627
    282930  
  • 2022年11月
     123456
    78910111213
    14151617181920
    21222324252627
    282930  
PAGE TOP ↑