1.1春の元のコメント
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( "シングルトン" ) @Resposity( "useDao" ) パブリック クラス UserDaoImpl 実装UserDao { // 此处省略代码 }
@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テストの質問
AC = ApplicationContextの新しい新 ClassPathXmlApplicationContext( "bean.xml"); //かかわらず、クラスや設定のプロファイル
IAccountService ac.getBean AS =( "AccountServiceの"、IAccountServiceの。クラス)。
アクションのこの2行は、あなたがそれを書いていない場合、あなたは直接のヌルポインタ例外を求めるプロンプトが表示されます、コンテナを得ることです。だから、簡単に削除することはできません。これは、テスト中に非常に面倒です。春の統合JUnitのは、私たちは、この問題を解決することができます。
2.2スプリング積分のJUnit
Springコンテナを作成するためのSpringJunitが責任をしましょう、しかし、あなたは直接テストクラスに注入した豆をテストする必要がありますプロファイルの名前を伝える必要があります。
統合手順:
<! - ここではspring5と要件の上には、JUnitのバージョン4.12以上でなければならないことに留意すべきである- >
< 依存>
< groupIdを> org.springframework </ groupIdを>
< たartifactId >春のテスト</ たartifactId >
< バージョン> 5.0.2.RELEASE </ バージョン>
</ 依存関係>
< 依存>
< groupIdを> JUnitの</ groupIdを>
< たartifactId > JUnitの</ たartifactId>
< バージョン> 4.12 </ バージョン>
< スコープ>テスト</ スコープ>
</ 依存
@RunWith(SpringJUnit4ClassRunner。クラス) パブリック クラスSpringJunitTest { }
(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()。 } }