春の注釈開発とテスト

A、春の注釈開発

  1.1春の元のコメント

  1.2春の新しいコメント

二、春の統合JUnitの

  2.1オリジナル春のJUnitテストの質問

  2.2スプリング積分のJUnit

 

 

 

A、春の注釈開発

  1.1春の元のコメント  

  スプリングフレームワーク光再構成コード、構成が重い影響開発効率、代わりに、注釈、注釈を開発する傾向であるのXML プロファイル部材が開発効率を向上させるため、構成を簡素化することができます。のオリジナルノートには、主に他の構成は、重い設定の問題を解決するようになっています。

  次のようにオリジナルのノートは、次のとおりです。

注釈説明
ビーン上のクラスをインスタンス化するために使用@Component 
ウェブ層上@Controllerの使用は、Beanクラスはインスタンス化
ビーンサービス・クラスで使用さ@Service層をインスタンス化する
例のクラスで使用される@RepositoryのDAO層を豆
注入するために使用されるタイプのフィールド依存応じてオン@Autowired使用
@Qualififier @Autowired名に基づいて依存性注入と組み合わせて使用する
名前によって注入@Resource相当@ Autowired + @ Qualififier、
@value噴射共通属性
@Scopeは豆を付しスコープの
メソッドをタグ付け@PostConstructの使用は、豆の初期化メソッド内のメソッドである
メソッドをタグ付けにこの方法を使用@PreDestroy豆を破壊する方法であり、

  注釈がapplication.xmlの上に配置する必要が使用するように、スキャン動作はサブパケットとパケットは次のように、注釈構成クラス、フィールドおよびメソッドを使用して指定を識別するためにスキャンする必要があるでビーン構成成分です。

<! - 注釈コンポーネントスキャン、新聞にすべてのクラスをスキャンする- >  

< コンテキスト:スキャンコンポーネントベース・パッケージ=「com.itheima」> </ コンテキスト:コンポーネントスキャン>

  試験:使用@Compont又は@Repositoryスプリング識別UserDaoImplがコンテナのバネによって作成されたオブジェクトをインスタンス化する必要があります。

// @Component( "userDao")

@Repository"userDao")// userDao相当于XML配置的豆的ID
パブリッククラスUserDaoImpl 実装 UserDao {
  @Override パブリック(){保存無効    ランニング保存するSystem.out.println( " ... ... ");   } }
  


  依存性注入がある場合userDao @Autowiredまたは@ Autowired + @ Qulififierまたは@Resourceを介して注入することができる。以下

// @Component( "UserServiceのもの") 
@Service( "UserServiceのその" パブリック クラス UserServiceImpl 実装 UserServiceの{ 
  / *
  
@Autowired
  @Qualifier( "userDao")
  
* /
  @Resource(名= "userDao" )//両方のコール依存性注入することができる   プライベートuserDao userDao;
  @Override   
公共 ボイド保存(){     userDao.save();   } }

  インジェクションとの.propertiesファイルデータ列:

@Repository( "userDao" パブリック クラス UserDaoImpl 実装UserDao { 
  @value(
"注入普通数据" )   プライベート文字列str。
  @value(
"$ {jdbc.driver}" )   プライベート文字列ドライバ。   @Override   公共の 無効(){保存     するSystem.out.println(STR);     System.out.println(ドライバ)。     System.out.println( "実行中のセーブ... ..." );   }
}
 
  使用@Scopeはビーン範囲をマーク
// @Scope( "プロトタイプ") 
@Scope( "シングルトン" 
@Resposity( "useDao" パブリック クラス UserDaoImpl 実装UserDao {
      // 此处省略代码 
 } 
  使用@PostConstructは破壊マーク@PreDestroyの方法を使用して、初期化メソッドをマーク
@PostConstruct 
 公共 ボイドのinit(){ 
    System.out.printlnは( "初期化方法...." ); 
} 

@PreDestroy 
公共 ボイド(){破壊
    するSystem.out.println( "破壊の方法を....." )。
}

  1.2春の新しいコメント

  以上の構成により簡略化、低減設定を介してXML構成、アノテーションでBeanアノテーションを減少させます。しかし、それは以下のすべてを置き換えることはできません。

コンフィギュレーション・ファイルのロード
プロパティプレースホルダ:コンテキスト
コンポーネントスキャン コンテキスト:コンポーネント・スキャンを

  技術の深化と、新しいノートの導入のほとんどは、完全に新しいXML設定注釈に置き換えます。次の新しい注釈:

説明注釈
@Configurationは、現在のクラスがロードされたコンテナは、クラスの注釈から生成されたクラスSpring構成、ある指定
のコンテナをスキャンするために、初期化パッケージで指定するための@ComponentScan春。ばね作用とXML構成ファイル内の< コンテキスト:スキャンコンポーネントベース・パッケージ=「com.itheima」/> のよう
@Beanはスプリングコンテナに格納されている戻り値によって示されている方法で使用
@PropertySourceと設定ファイルの.propertiesファイルをロードするため
のクラスを導入するための他の構成@import

  以下は、新しい注釈の例です:

@Configuration 
@ComponentScan( "com.itheima")
@import({DataSourceConfiguration。クラス}) パブリック クラス SpringConfiguration {}
@PropertySource( "クラスパス:jdbc.properties" パブリック クラスDataSourceConfiguration { 
  @value( "$ {jdbc.driver}" ) 
  プライベート文字列ドライバ。
  @value(
"$ {jdbc.url}" )   プライベート文字列のURL。
  @value(
"$ {jdbc.username}" )   プライベート文字列のユーザ名。
     @value(
"$ {jdbc.password}" )   プライベート文字列のパスワード。   @Bean(名 = "データソース" )   公衆データソースをgetDataSource()がスローはPropertyVetoExceptionを{
    ComboPooledDataSourceのdataSource = 新しいComboPooledDataSource();     dataSource.setDriverClass(ドライバ)。
    dataSource.setJdbcUrl(URL);
    dataSource.setUser(ユーザー名);
    dataSource.setPassword(パスワード);
    返すデータソースを。
  }
}

  テストコード:

@Test 
公共 ボイド testAnnoConfiguration()がスロー例外{
   //この方法のApplicationContextに買収新しい血管の必要性を指摘します
  ApplicationContextのApplicationContextの= 新しい AnnotationConfigApplicationContext(SpringConfiguration。クラス);  
  UserServiceのUserServiceの=(UserServiceの)applicationContext.getBean( "UserServiceの")。
  userService.save();
  データソースのdataSource =(データソース)applicationContext.getBean( "データソース")。
  接続の接続= dataSource.getConnection()。
  System.out.println(接続)。
}

二、春の統合JUnitの

  2.1オリジナル春のJUnitテストの質問

  テストクラスでは、各々の試験方法は、次の2行のコードを有します。
AC = ApplicationContextの新しい新 ClassPathXmlApplicationContext( "bean.xml"); //かかわらず、クラスや設定のプロファイル
IAccountService ac.getBean AS =( "AccountServiceの"、IAccountServiceの。クラス)。

  アクションのこの2行は、あなたがそれを書いていない場合、あなたは直接のヌルポインタ例外を求めるプロンプトが表示されます、コンテナを得ることです。だから、簡単に削除することはできません。これは、テスト中に非常に面倒です。春の統合JUnitのは、私たちは、この問題を解決することができます。

  2.2スプリング積分のJUnit

  Springコンテナを作成するためのSpringJunitが責任をしましょう、しかし、あなたは直接テストクラスに注入した豆をテストする必要がありますプロファイルの名前を伝える必要があります。

  統合手順: 

  ①スプリング統合の座標を導入JUnitの
  ②@Runwithを使用して、注釈の元の実行を置き換えます
  ③@ContextConfifiguration指定されたコンフィギュレーションファイルまたはコンフィギュレーションクラスを使用して
  ④使用@Autowiredインプラントは、テスト・オブジェクトが必要です
  テストのためのテストメソッドを作成します。⑤
  次のとおりです。
  スプリング統合JUnitの導入のインポート座標座標
<! - ここではspring5と要件の上には、JUnitのバージョン4.12以上でなければならないことに留意すべきである- >  
< 依存>
  < groupIdを> org.springframework </ groupIdを>
  < たartifactId >春のテスト</ たartifactId >
  < バージョン> 5.0.2.RELEASE </ バージョン>
</ 依存関係>

< 依存>
  < groupIdを> JUnitの</ groupIdを>
  < たartifactId > JUnitの</ たartifactId>
  < バージョン> 4.12 </ バージョン>
  < スコープ>テスト</ スコープ>
</ 依存
  ②@Runwithを使用して、注釈の元の実行を置き換えます
@RunWith(SpringJUnit4ClassRunner。クラスパブリック クラスSpringJunitTest { 
}
  ③@ContextConfifiguration指定されたコンフィギュレーションファイルまたはコンフィギュレーションクラスを使用して
(SpringJUnit4ClassRunnerの@RunWith クラス
// スプリングコアプロファイルをロード//
@ContextConfiguration(値= {「CLASSPATH:applicationContext.xmlを」}) //一垂直に選択することができ
// 負荷スプリングコア構成クラス
@ContextConfiguration(クラスを= SpringConfiguration { クラス })
パブリック クラス SpringJunitTest {}

  ④使用@Autowiredインプラントは、テスト・オブジェクトが必要です

@RunWith(SpringJUnit4ClassRunner クラス
@ContextConfiguration(クラス= {SpringConfiguration。クラス })
パブリック クラスSpringJunitTest { @Autowired プライベートUserServiceのUserServiceの。 }
  テストのためのテストメソッドを作成します。⑤
@RunWith(SpringJUnit4ClassRunner クラス)@ContextConfiguration(クラス= {SpringConfiguration。クラス})
 パブリック クラスSpringJunitTest { 

    @Autowired 
    プライベートUserServiceのUserServiceの。

    @Test 
    公共 ボイドtestUserService(){ 
        userService.save()。
    } 
}    

 

 

おすすめ

転載: www.cnblogs.com/tashanzhishi/p/12012574.html