Spring IOCはJSR 330標準注釈を使用しています.

10378 ワード

Spring 3.0から、SpringはJSR 330の標準的な注釈に対するサポートを提供する.これらの注釈はSpringの注釈を飲むようにスキャンされます.あなたは関連するJarカバンをあなたのクラスパスに加えるだけでいいです.
  :     Maven,javax.inject        Maven      (http://repo1.maven.org/maven2/javax/inject/javax.inject/1/),             pom.xml   。
<dependency>
 <groupId>javax.inject</groupId>
 <artifactId>javax.inject</artifactId>
 <version>1</version>
</dependency>	
@Injectと@Namedを使って依存注入を行います.
<!--
h='&ハx 41;ヽoo.ツx 75;ヽoo.ツ116;ヽoo.ツx 6 f;ヽoo.ツx 77;ヽoo.ツx 69;ヽoo.ツ114;ヽoo.ツx 65;ヽoo.ツ100;a='&ハ64;n='&菗x 4 e 0 d;&ヽoo.ツx 4 f 7 f;ヽoo.ツ29992;e=n+a+h
document.write('<a h'+'ref'="="ma'+ilto'':'+e+'''''''''t');'''+e+''''
//-->
at Autowiredは使用しません.
@javax.inject.Injectは以下のように使用できます.
import javax.inject.Inject;
public class SimpleMovieLister {
 private MovieFinder movieFinder;
 @Inject
 public void setMovieFinder(MovieFinder movieFinder) {
 this.movieFinder = movieFinder;
 }
 // ...
}
<!--
h='&ハx 41;ヽoo.ツx 75;ヽoo.ツ116;ヽoo.ツx 6 f;ヽoo.ツx 77;ヽoo.ツx 69;ヽoo.ツ114;ヽoo.ツx 65;ヽoo.ツ100;ヽoo.ツ199968;ヽoo.ツx 6837;a='&ハ64;n='&菗21644;';e=n+a+h
document.write('<a h'+'ref'="="ma'+ilto'':'+e+'''''''''t');'''+e+''''
//-->
at Autowiredと同じです.
を選択します.クラスレベル、ドメインレベル、
<!--
h='&ハx 49;ヽoo.ツ110;ヽoo.ツ106;ヽoo.ツx 65;ヽoo.ツx 63;ヽoo.ツ116;a='&ハ64;n='&菗x 65 b 9;&ヽoo.ツx 6 cd 5;&ヽoo.ツx 7 ea 7;&ヽoo.ツx 522 b;&ヽoo.ツ21644;&ヽoo.ツ26500;ヽoo.ツ36896;ヽoo.ツ222220;ヽoo.ツ21442;&ヽoo.ツ25968;ヽoo.ツx 7 ea 7;&ヽoo.ツx 522 b;&ヽoo.ツx 6765;ヽoo.ツx 4 f 7 f;ヽoo.ツ29992;e=n+a+h
document.write('<a h'+'ref'="="ma'+ilto'':'+e+'''''''''t');'''+e+''''
//-->
方法レベルとコンストラクタパラメータレベルはat Injectを使用します.
.もしあなたが依存しなければならない名前を指定すると、
<!--
h='&ハ78;ヽoo.ツx 61;ヽoo.ツx 6 d;ヽoo.ツx 65;ヽoo.ツ27880;ヽoo.ツx 89 e 3;&ヽoo.ツx 5373;ヽoo.ツx 53 ef;';a='&ハ64;n='&菗20320;ヽoo.ツx 53 ef;ヽoo.ツx 4 ee 5;&ヽoo.ツx 4 f 7 f;ヽoo.ツ29992;e=n+a+h
document.write('<a h'+'ref'="="ma'+ilto'':'+e+'''''''''t');'''+e+''''
//-->
at Name注解を使ってもいいです.
:
import javax.inject.Inject;
import javax.inject.Named;
public class SimpleMovieLister {
 private MovieFinder movieFinder;
 @Inject
 public void setMovieFinder(@Named("main")  MovieFinder movieFinder) {
 this.movieFinder = movieFinder;
 }
 // ...
}
@Named:
<!--
h='&ハx 43;ヽoo.ツx 6 f;ヽoo.ツx 6 d;ヽoo.ツ112;ヽoo.ツx 6 f;ヽoo.ツ110;ヽoo.ツx 65;ヽoo.ツ110;ヽoo.ツ116;ヽoo.ツ27880;ヽoo.ツx 89 e 3;';a='&ハ64;n='&菗x 7 b 49;ヽoo.ツx 4 ef 7;&ヽoo.ツ2010.10;e=n+a+h
document.write('<a h'+'ref'="="ma'+ilto'':'+e+'''''''''t');'''+e+''''
//-->
at Component注解に相当します.
<!--
h='&ハx 43;ヽoo.ツx 6 f;ヽoo.ツx 6 d;ヽoo.ツ112;ヽoo.ツx 6 f;ヽoo.ツ110;ヽoo.ツx 65;ヽoo.ツ110;ヽoo.ツ116;ヽoo.ツ27880;ヽoo.ツx 89 e 3;';a='&ハ64;n='&菗x 53 ef;ヽoo.ツx 4 ee 5;&ヽoo.ツx 66 ff;ヽoo.ツx 4 ee 3;';e=n+a+h
document.write('<a h'+'ref'="="ma'+ilto'':'+e+'''''''''t');'''+e+''''
//-->
at Componentの代わりに注釈ができます.
@javax.inject.Namedはこのように使用されてもよい.
import javax.inject.Inject;
import javax.inject.Named;
@Named("movieListener")
public class SimpleMovieLister {
 private MovieFinder movieFinder;
 @Inject
 public void setMovieFinder(MovieFinder movieFinder) {
 this.movieFinder = movieFinder;
 }
 // ...
}
<!--
h='&ハx 43;ヽoo.ツx 6 f;ヽoo.ツx 6 d;ヽoo.ツ112;ヽoo.ツx 6 f;ヽoo.ツ110;ヽoo.ツx 65;ヽoo.ツ110;ヽoo.ツ116;ヽoo.ツ27880;ヽoo.ツx 89 e 3;&ヽoo.ツx 4 e 0 d;&ヽoo.ツ38656;ヽoo.ツx 8981;ヽoo.ツx 6307;ヽoo.ツ26126;ヽoo.ツ32452;ヽoo.ツ20274;ヽoo.ツ30340;ヽoo.ツx 540 d;&ヽoo.ツx 5 b 57;';a='&ハ64;n='&菗x 4 f 7 f;ヽoo.ツ29992;e=n+a+h
document.write('<a h'+'ref'="="ma'+ilto'':'+e+'''''''''t');'''+e+''''
//-->
at Componentを使ってコンポーネントの名前を指定する必要はありません.
@Namedは似たようなスタイルでも使用できます.
import javax.inject.Inject;
import javax.inject.Named;
@Named
public class SimpleMovieLister {
 private MovieFinder movieFinder;
 @Inject
 public void setMovieFinder(MovieFinder movieFinder) {
 this.movieFinder = movieFinder;
 }
 // ...
}
<!--
h='&ハ78;ヽoo.ツx 61;ヽoo.ツx 6 d;ヽoo.ツx 65;ヽoo.ツ100;ヽoo.ツ30340;ヽoo.ツ26102;ヽoo.ツx 5019;a='&ハ64;n='&菗22312;ヽoo.ツx 4 f 7 f;ヽoo.ツ29992;e=n+a+h
document.write('<a h'+'ref'="="ma'+ilto'':'+e+'''''''''t');'''+e+''''
//-->
at Namedを使う時
セルスキャンは、Spring注釈を使用するように使用することができる.
<beans>
 <context:component-scan base-package="org.example"/>
</beans>
標準方式の制限
標準注解を使用する場合、いくつかの意味のある機能を知っていますが、利用可能ではないことが必要です.
<tr>
	<td>Spring</td>
	<td>javax.inject.*</td>
	<td>javax.inject       </td>
</tr>
<tr>
	<td>@Autowird</td>
	<td>@Inject</td>
	<td>@Inject  required  </td>
</tr>
<tr>
	<td>@Component</td>
	<td>@Named</td>
	<td></td>
</tr>
<tr>
	<td>@Scope("singleton")</td>
	<td>@Singleton</td>
	<td>JSR 330       Spring prototype。  ,   Spring      ,   Spring    JSR 330 bean       singleton。        singleton    ,     Spring   @Scope   。javax.inject        ,                  </td>
</tr>
<tr>
	<td>@Qualifier</td>
	<td>@Named</td>
	<td></td>
</tr>
<tr>
	<td>@Value</td>
	<td></td>
	<td>    </td>
</tr>
<tr>
	<td>@Required</td>
	<td></td>
	<td>    </td>
</tr>
<tr>
	<td>@Lazy</td>
	<td></td>
	<td>    </td>
</tr>
posted on
2015-02-01 23:37
パイプをくわえる繊夫読み(
…)コメント(
…)
編集
コレクション
コメントを更新
ページを更新
トップに戻る
のブログです
博問
ニュース
フラッシュ・メモリ
プログラマー募集
知識庫
var enaboleGoogleAd=canShow Adsense()
fixPostBody Format()
var google(=google)
google tag.cmd=google tag.cmd𞓜[]
(function(){
if(enableGoogleAd){
var gads=document.creat Element('script')
gads.async=true;
gads.type='text/javascript'
var useSSL='https:'=document.location.protocol;
gads.src=(useSSL?'https:':http:')+
'/www.google tagservices.com
var node=document.getElements ByTagName('script')[0];
node.parent Node.insertBefore(gads,node)
)
)()
try{
if(enableGoogleAd){
google tag.cmd.push()
google tag.defineSlot('/1090369/cnblogs postuC 2',[468,60],'div-gpt-ad-1381717989-0')addService(google tag.pubads);
google tag.defineSlot('/1090369/cnblogs posts',[300,250],'div-gt-ad-1381817989-1].addService(google Tag.pubads);
google tag.pubads().enable SingleRequest()
google tag.pubads().collappseemptyDivs()
google tag.enabeleServices()


}catch(e){}
try{
if(enableGoogleAd){
google tag.cmd.putsh(google tag.display);
}else{
$('萱div-gpt-ad-1381717989-1').hide();
)
}catch(e){}
try{
if(enableGoogleAd){
google tag.cmd.putsh(google tag.display);
}else{
$('菗div-gpt-ad-1381717989-0').hide();
)
}catch(e){}
$(function){
loadNews AndKb();
loadBlogSignature()
LoadPostInfoBlock(cbbaglogId,cbuentryId,cbbbblogAp,cblogUserGuid)
Get ProvNext Post(cb entryId,cbbbaglogId,cbcuntry CreatedDate)
loadOpt Under Post()
Get HistoryToday(cbbbbbbbblogId、cbcubagAp、cbcuntry CreatedDate)
set Timeout(function(){increment View Count(cbuentryId)}、200);

loadBlogNews()
loadBlog Default Calender();
loadBlogSideColumn()
パワードby:
ブログですテンプレート提供:
のブログです Copyright©2015パイプをくわえるスネ夫
<スクリプト>markdown_highlight();
var allowComments=true、isLogind=false、cb_blogId=149253、cb_entryId=4266590,cb_blogApp=current BlogApp、cb_blogUserGid='e 67 a 3 e 15-63 ad-e 211-83 e 8-90 b 11 c 0 b 17 d 6',cb_entryCreatedDate='2015/2/1 23:37:00'loadView Count(cbuentryId)
var commentManager=new blogCommentManager()commentManager.rendeComments(0)