注釈を使用してIOCコンテナを構築します
アノテーションを使用して、スプリングコンテナに豆を登録します。 ApplicationContext.xml <Context:Component-ScanScansベースパッケージ=” Pagkage1 [、pagkage2、…、pagkagen]”/>に登録する必要があります。
例:ベースパッケージでパッケージを指定します
<コンテキスト:component-scanベースパッケージ= "cn.gacl.java"/>
CN.gacl.javaパッケージとそのサブパッケージで、クラスに特定のannotation [@component/@repository/@service/@controller]がある場合、このオブジェクトは豆としてスプリングコンテナに登録されることを示します。 <コンテキスト:component-scanベースパッケージ= ""/>で複数のパッケージを指定することもできます。
<コンテキスト:Component-Scanベースパッケージ= "cn.gacl.dao.impl、cn.gacl.service.impl、cn.gacl.action"/>
複数のパッケージはコンマで区切られています。
1。@Component
@成分
これは、すべてのスプリングマネージドコンポーネントの一般的なフォームです。 @Componentアノテーションはクラスのヘッドに配置でき、@Componentは推奨されません。
2。@Controller
@Controllerは、プレゼンテーションレイヤーの豆、つまりアクションなどに対応しています。
@controller @scope( "Prototype")Public ClassユーザーアクションはBaseAction <user> {...}を拡張します@Controller Annotationを使用してユーザーアクセスを識別した後、ユーザーが管理のためにSpringコンテナに引き渡されることを意味します。スプリングコンテナに「ユーザーアクション」という名前のアクションがあります。この名前は、ユーザーアクションクラス名に基づいて撮影されます。注:@Controllerがその値を指定していない場合、@Controller @、デフォルトのBean名はクラス名の最初の文字の小文字です。 valueを指定する場合、@controller(value = "useraction")】または【@controller( "useraction")】、beanの名前として値を使用します。
ここでのユーザーは、@scopeアノテーションも使用します。 @scope( "Prototype")は、アクションの範囲がプロトタイプとして宣言されることを意味します。コンテナのScope = "Prototype"を使用して、各要求にそれを処理するための別のアクションがあることを確認できます。スプリングデフォルトのスコープは、Singleton Mode(Scope = "Singleton")です。これは、アクションオブジェクトのみを作成します。各アクセスは同じアクションオブジェクトです。データは安全ではありません。 struts2では、各アクセスが異なるアクションに対応する必要があります。 scope = "prototype"は、リクエストがあるときにアクションオブジェクトが作成されるようにします。
3。 @サービス
@Serviceは、サービスレイヤーBeanに対応しています。
@service( "userservice")パブリッククラスuserserviceimplを実装します{……}@service( "userservice")注釈は、Springがuserserviceimplのインスタンスを作成したい場合、Bean名を「userservice」と呼ぶ必要があることをspringに伝えます。このようにして、アクションがuserserviceImplのインスタンスを使用する必要がある場合、springによって作成された「userservice」をアクションに注入できます。アクションでは、春までに注入された「userservice」を受信するために「userservice」という名前の変数を宣言する必要があります。特定のコードは次のとおりです。
// inject userservice @resource(name = "userservice")private userservice userservice;
注:アクションで宣言された「userservice」変数のタイプは、「userserviceimpl」またはその親クラス「userservice」でなければなりません。そうしないと、一貫性のないタイプのために挿入できません。アクションの宣言された「userservice」変数は@resourceアノテーションを使用し、そのname = "userservice"を示すため、「userservice」をインスタンス化したいことを春に伝えることに相当します。春は私がそれを迅速にインスタンス化するのに役立ち、それから私に与えます。 Springがユーザーサービス変数に@Resourceアノテーションを確認した場合、指定された名前属性に従って、アクションでuserserviceImplのインスタンスを使用する必要があることがわかります。この時点で、Springは、アクションの「userservice」と呼ばれる「userservice」と呼ばれるユーザーサービスのインスタンスを「userservice」変数に挿入して、アクションがuserserviceのインスタンス化を完了するのに役立つため、アクションでは "userservice userservice = new userserviceimpl();"を使用する必要はありません。これは、ユーザーサービスをインスタンス化する最も原始的な方法です。
springがない場合、アクションがuserserviceimplを使用する必要がある場合、「userservice userservice = new userserviceimpl();」を介してインスタンスオブジェクトを積極的に作成する必要があります。ただし、Springを使用した後、ActionがuserserviceImplを使用する場合、userserviceimplのインスタンスを積極的に作成する必要はありません。 userserviceImplインスタンスの作成は、春に引き渡されました。 Springは、作成されたuserserviceImplインスタンスをアクションに提供し、アクションを取得した後に直接使用できます。
アクションは、userserviceImplインスタンスを積極的に作成した直後に使用できますが、Springを受動的に待機してユーザーサービスインスタンスを作成してから、アクションに注入します。
これは、「userserviceimpl」クラスに対するアクションの「制御」が「逆転」されていることを示しています。イニシアチブは私自身の手にあることがわかります。 「userserviceimpl」クラスインスタンスを使用する必要があります。私はそれをすぐに使用するためにイニシアチブをとることができます。しかし、今では、「userserviceimpl」クラスインスタンスの新しいインスタンスにイニシアチブをとることはできません。新しい「userserviceimpl」クラスインスタンスのパワーは、春までに奪われました。 springのみが「userserviceimpl」クラスインスタンスの新しいインスタンスがあり、アクションはrviceimplクラスのインスタンスの後に「userse」クラスを作成するためにスプリングのみを待つことができます。 userserviceは、Acionがアクションに依存する必要があるuserserviceimplに依存しています。
4。 @ Repository
@Repositoryは、データアクセスレイヤーBeanに対応しています。
@Repository(value = "userdao")パブリッククラスuserdaoimpl extends basedaoimpl <user> {………}@Repository(value = "userdao")注釈は、springに「userdao」という名前のuserdaoimplインスタンスを作成できるように指示します。
Springで作成された「userdao」という名前のuserdaoimplインスタンスをサービスが使用する必要がある場合、 @rosource(name = "userdao")アノテーションを使用してSpringを伝え、Springは作成されたuserdaoをサービスに注入できます。
// userdaoを注入し、ユーザーIDに従って指定されたユーザーをデータベースから外す場合、@resource(name = "userdao")private basedao <user> userdaoを使用する必要があります。
@resource、@autowired、および @qualifierはすべて、オブジェクトを注入するために使用されます。その中でも、@Resourceは名前またはタイプで注入でき、 @autowiredはタイプでのみ注入でき、 @qualifierは名前でのみ注入できます。
しかし、彼らにはいくつかの微妙な違いがあります:
1。@Resourceおよび@Qualifierは、デフォルトでBYNAMEによって自動的に注入され、@AutowiredはデフォルトでBYTYPEによって自動的に注入されます。
2。@Resourceには、名前とタイプのより重要な2つのプロパティがあります。名前属性を使用すると、bynameの自動噴射ポリシーが使用されます。型属性を使用する場合、BYTYPE自動噴射ポリシーが使用されます。
3。@ResourcesはJDKが提供する注釈であり、 @AutowiredはSpringが提供する注釈です。
@Resourceを@Autowired @Qualifier、Hahaのボスとして扱うことができます。私はあなたが持っているものを持っています、そして私はあなたが持っていないものを持っています、そして私も持っています〜
@resource、@autowired、および @qualifierはすべて、オブジェクトを注入するために使用されます。その中でも、@Resourceは名前またはタイプで注入でき、 @autowiredはタイプでのみ注入でき、 @qualifierは名前でのみ注入できます。
しかし、彼らにはいくつかの微妙な違いがあります:
1。@Resourceおよび@Qualifierは、デフォルトでBYNAMEによって自動的に注入され、@AutowiredはデフォルトでBYTYPEによって自動的に注入されます。
2。@Resourceには、名前とタイプのより重要な2つのプロパティがあります。名前属性を使用すると、bynameの自動噴射ポリシーが使用されます。型属性を使用する場合、BYTYPE自動噴射ポリシーが使用されます。
3。@ResourcesはJDKが提供する注釈であり、 @AutowiredはSpringが提供する注釈です。
@Resourceを@Autowired @Qualifier、Hahaのボスとして扱うことができます。私はあなたが持っているものを持っています、そして私はあなたが持っていないものを持っています、そして私も持っています〜
上記の春の注釈は、注釈を使用してIOC容器を構築する方法は、私があなたと共有したすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。