Springフレームワークの概要

背景:アプリケーションのビジネスロジックが複雑化している。

一. Springの概要

  1. Springは軽量でオープンソースのフレームワークであり、以前のEJB(重い)に代わるものです。Springはコンテナフレームワークであり、主にIoCとAOPの概念を実装しています。
  2. Springのコアコンポーネント:

(1) AOP:アスペクト指向プログラミングで、機能拡張は元のコードを変更することなく実現されます。

(2) IoC:制御の反転で、オブジェクトの作成はnewを使用せず、Springの設定によって行われます。

  1. Springはワンストップのフレームワークです。

(1) JavaEEの3層構造(MVC)において、各層に異なる解決技術を提供します。

Web層:Spring MVC

Service層:SpringのIoC

DAO層:SpringのJdbcTemplate

二. Springの役割

依存関係の低下

アプリケーション間の依存関係

クラス同士の依存

メソッド同士の依存

解除:アプリケーション間の依存関係を低下させる

実際の開発では、コンパイル時に依存せず、実行時に依存する。

解除のアプローチ:

リフレクションを使ってオブジェクトを作成し、直接newを使わない

コンフィギュレーションファイルを使って、作成するオブジェクトの完全修飾クラス名を取得する

ファクトリパターンを使ってオブジェクトを取得する

開発では、依存関係を完全に削除することは不可能であり、それらの依存関係を低下させることが目的です。

三. Springのアノテーション

  1. Beanオブジェクトを管理する

@Repository

@Service

@Controller

@Component

  1. Beanオブジェクトの依存関係を管理する

@Autowired

@Resource

  1. @Autowiredと@Resourceの違い

    1. ResourceはJDKに含まれるアノテーションであり、Springフレームワークのものではありません。一方、@AutowiredはSpringのアノテーションです。
  2. @Autowiredと@Resourceはどちらも型と名前で注入できます。

  3. @Resourceはより柔軟で、nameやtype属性でBeanの名前と型を指定できます。

  4. @Autowiredはrequiredをfalseに設定することで、必須でない属性を注入できます。

AOPの思想

これは新しいプログラミングの思想であり、OOP(オブジェクト指向プログラミング)の補完です。

    1. 手続き型
  1. オブジェクト指向
  2. アスペクト指向プログラミング(AOP)
  3. 関数指向
  4. コンポーネント指向

応用例

権限検証(インターセプタ)

単体テスト

トランザクション管理

操作ログの記録機能(ユーザーがいつ何を実行したかを記録)

アスペクト指向のアプローチ

プログラム実行中に、AOPの設定に基づき、非コアな業務ロジックのコードをメソッドの開始・終了または全体に動的に挿入するプログラミングの思想です。

設定方法

  1. アノテーションによる設定
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
  1. XMLによる設定
<!--AOPの切面を設定-->
    <aop:config>
        <!--ポイントカットを設定 id:ポイントカットに名前を付ける、切面を設定するときに必要-->
        <aop:pointcut id="pointOne" expression="execution(* com.sc.aop.UserDao.*(..))"></aop:pointcut>
        <!--<aop:pointcut id="pointOne" expression="execution(public void com.sc.aop.UserDao.*(String))"></aop:pointcut>-->
        <!--切面を設定-->
        <aop:aspect ref="writeLog">
            <aop:before method="wr" pointcut-ref="pointOne"></aop:before>
        </aop:aspect>

    </aop:config>

5つの通知

@Before 前置通知

@After 後置通知

@AfterReturning 戻り値通知

@AfterThrowing 例外通知

@Around 環境通知

タグ: Spring IoC AOP Java JavaEE

8月19日 07:07 投稿