English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Springの自動アセンブリとスキャンアノテーションの詳細コード解説

1 javabeanの自動アサインメント

自動注入により、XMLファイルの設定情報を減少させます。

<?xml version="1.0" encoding="UTF-8"?>
<!-- 到入xml文件的约束 -->
<beans xmlns="http://www.springframework.org/schema/beans
  xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
  <!-- 1 Daoオブジェクトのインスタンス化 id:オブジェクトの参照を完了 class:作成する必要があるオブジェクトに対応するクラスの完全限定名を指定します -->
  <bean id="usersDao" class="org.guangsoft.dao.impl.UsersDaoImpl">
  </bean>
  <!-- 2service autowireのインスタンス化:属性の役割、オブジェクトの依存関係の自動アサインメント no(デフォルト実行) byName:注入する属性に対応するsetメソッドの名前とspringコンテナ内のオブジェクトのIDを一致させ、一致すれば自動注入を行います 
    byType:使用需要注入的属性对应的set的方法参数类型和spring容器中的对象的类型进行匹配,如果能匹配上,进行自动注入 constructor:在byName和byType之间进行选择(首先byName,如果byName不匹配再byType) 
    实际使用:byName -->
  <bean id="usersService" class="org.guangsoft.service.impl.UsersServiceImpl"
    autowire="byType">
  </bean>
  <!-- 3实例化Action对象 -->
  <bean id="usersAction" class="org.guangsoft.action.UsersAction"
    autowire="byType">
  </bean>
</beans>

2 spring的扫描注解

使用spring的扫描注解,重构三层结构。配置更少的内容

在applicationContext.xml文件中,导入扫描的xsd

l 开启注解扫描

<?xml version="1.0" encoding="UTF-8"?>
<!-- 到入xml文件的约束 -->
<beans xmlns="http://www.springframework.org/schema/beans
  xmlns:context="http://www.springframework.org/schema/context" [ A1 ]
  xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context-4.1.xsd
   ">
  <!-- 开启注解扫描 base-package属性:指定需要扫描的包,多个包之间使用,号隔开 a.b.c a.b.d a.b.e -->
  <context:component-scan
    base-package="org.guangsoft.dao.impl,
    org.guangsoft.service.impl,org.guangsoft.action"></context:component-scan>
</beans>

アノテーションをまとめます

クラスアノテーション:

@controller(web層にアノテーションを追加)

@service(serivce層にアノテーションを追加)

@repository(DAO層にアノテーションを追加)

@component(Javaクラスにアノテーションを追加、旧バージョンのspringではこのアノテーションのみでした)

以上の3つのアノテーション:対応するクラスをspringコンテナに含めます

Id:クラス名の最初の文字は小文字(デフォルト)

IDを自分で指定する必要がある場合は、3つのアノテーションにStringクラスのパラメータを追加する必要があります

@controller(“uAction”)id=uAction

@resouce(依存関係を持つオブジェクトのプロパティに追加するアノテーション)

自動装配を通じて必要な依存関係のプロパティへの注入を完了します。

パラメータ:name:byNameによる自動装配に従います

パラメータ:type:byTypeによる自動装配に従います

アノテーション実行プロセス

1,springのコンテナをロードします

2,springコンテナ内の指定されたパッケージをスキャンします

3,指定されたパッケージ内に3つのクラスアノテーションが付いているクラスをスキャンし、それをspringコンテナに含めます

4,<beanid=””class=””>

5,@resourceアノテーションが付いている属性が含まれるスキャンされたクラス、それから自動装配で関係を構築します

6,Autowrie

まとめ

これで本文におけるSpringの自動装配とスキャンアノテーションのコード詳細の説明は完了です。皆様に役立つことを願っています。興味がある方は、本サイトを続けてご覧ください:

アノテーションによるコンポーネントスキャンの詳細解説

spring設定で複数のパッケージをスキャンする問題の解決策

不十分な点があれば、コメントをいただければ幸いです。皆様の本サイトへのサポートに感謝します。

声明:本文の内容はインターネットから収集され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしました。本サイトは所有権を持ちません。また、人工編集は行われていません。著作権侵害が疑われる内容を見つけた場合は、メールで notice#w までお知らせください。3codebox.com(メール送信時、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認がとれましたら、本サイトは即座に侵害疑いのコンテンツを削除します。)

おすすめ