spring注釈解説(分かりやすい)

5345 ワード

注を使用してIoC容器を構築します.
Spring容器にビーンを注釈で登録する.appication Contect.xmlに登録する必要があります.
例えば、base-packageでカバンを指定します.
 
 
cn.gacl.javaバッグとそのサブバッグの中に、ある種類の頭に特定の注釈があると、@Component/@Repository/@Service/@Controller)、このオブジェクトをBeanとしてSpring容器に登録します.中で複数のカバンを指定することもできます.
 
いくつかのコンマで区切られています.
1、@Component
@ComponentはSpringで管理されているすべてのコンポーネントの一般的な形式です.@Componentの注釈はクラスの頭に置いてもいいです.@Componentは使用を勧めません.
2、@Controller
@Controllerは表現層のBean、すなわちアクションに対応しています.
 
 
  • @Controller
  • @Scope("prototype")
  • public class UserAction extends BaseAction{
  • ……
  • }
  • @Controllerを使ってUserActionを注釈した後、UserActionをSpring容器に預けて管理するという意味で、Spring容器の中に「userAction」という名前のactionがあります.この名前はUserActionの類名によって付けられました.注意:もし@Controllerがvalue'@Controllerを指定しないなら、デフォルトのbeanの名前はこの類のクラス名の頭文字小文字で、value'@Controller(value=「UserAction」)または「@Controller(「UserAction」)」を指定すれば、valueをbeanの名前とします.
    ここでのUserActionはまた、@Scope注釈を使用して、@Scopeは、strutsにおけるActionのスレッド安全問題を回避するために、Actionの範囲をモデルとして宣言することを表しています.springデフォルトscopeは一例モードです.このように一つのアクションオブジェクトを作成します.訪問するたびに同じアクションオブジェクトです.データが不安定です.struts 2は毎回訪問するごとに異なるアクションに対応することを要求します.scope=「prototype」は要求がある時に一つのアクションオブジェクトを作成することができます.
    3、@サービス
    @Serviceは、業務層Beanに対応しています.例えば、
     
     
  • @Service("userService")
  • public class UserServiceImpl implements UserService {
  • ………
  • }
  • @Service(「userService」)はSpringに対して、SpringがUserServiceImplを作成する場合、beanの名前は「userService」でなければなりません.このようにActionがUserServiceImplを使用する必要がある場合、Springによって作成された「usrService」という名前でActionを入力してください.Springから注入された「userService」を受信する変数です.具体的なコードは以下の通りです.
     
     
  • // userService
  • @Resource(name = "userService")
  • private UserService userService;
  • 注意:アクション宣言での「userService」変数のタイプは、「UserServiceImpl」でなければなりません.または、父の種類「UserService」でなければ、タイプが一致しないため、注入できません.アクションで宣言された「userService」変数は、@Resourceの注釈を使用しています.アクションは「userService」を具体化したいと言っていますが、Springが早く実用化してくれて、SpringがuserService変数上の@Resourceの注釈を見たら、ActionでUserServiceImplを使用する必要があることが分かります.この時Springは自分の名前をSeviceと呼びます.のUserServiceImplの例をActionの「userService」変数に注入し、Actionがuser Serviceの実例化を完成するように助けます.このようにActionでは「UserService userService=new UserServiceImpl」という最も原始的な方法でService Service Service Service Service Service Service Service Serviceを実装しなくています.Springがない場合、ActionはUserServiceImplを使用する必要がある場合、「UserService userService=new UserviceImpl()」「Springを使用した後、ActはUserServiceImpl Spvice Spvice Spvice Spvice Spviceを使用する場合、自発的にUservicelを作成しなくてServicemple Sercempleを作成します.Springは作成したUserServiceImplの例をアクションに与え、アクションを持っていけばそのまま使用できます.アクションは、元のアクティブなUserServiceImplのインスタンスを作成するとすぐに使用できるようになり、SpringによってUserServiceImplのインスタンスが作成された後に、アクションに注入されてから使用できるようになる.これは、「UserServiceImpl」類に対する「制御権」が「反転」されているということを説明しています.元々は自分の手で、「UserServiceImpl」類の実例を使用して、自分からnewに出てすぐに使えるようになりましたが、今は自分から積極的にnew「UserServiceImpl」類の実例を使うことができません.Springによってパワーオフされてしまいました.Springだけがnew「UserServiceImpl」のような例を作成します.一方、アクションはSpringが「UserServiceImpl」のような例を作成した後、「お願い」Springが作成した「UserServiceImpl Spirl Spring」のような例を彼に渡します.「依存注入」とも呼ばれ、「依存注入」もよく分かります.アクションはUserServiceImplを使って作業する必要があります.それではUserviceImplに依存して、SpringはAcionに依存するUserServiceImplをActionに注入します.これはいわゆる「依存注入」です.アクションに対しては、アクションが何かに依存して、Springに注入をお願いします.Springには何か必要なものがありますか?Springは彼に自分から注入します.
    4、@Repository
    @Repository対応データアクセス層Bean、例えば:
     
     
  • @Repository(value="userDao")
  • public class UserDaoImpl extends BaseDaoImpl {
  • ………
  • }
  • @Repository(value=「userDao」)はSpringにSpringを教えて、Springに「userDao」というUserDaoImplの例を作成させます.
    ServiceがSpringを使用して作成した「userDao」というUserDaoImplの例を使用する場合、@Resource(name=「userDao」)の注釈をSpringに伝え、Springは作成したuserDaoをServiceに注入すればいいです.
     
     
  • // userDao, Id
  • @Resource(name = "userDao")
  • private BaseDao userDao;
  • 5.@ Resource 
    @ResourceデフォルトはByNameによって自動的に注入され、J 2 EEから提供されます.パッケージをjavax.annotation.Resourceに導入する必要があります.Resourceには2つの重要な属性があります.nameとtype、Springは@Resourceに注釈されたname属性をbeanの名前に解析し、type属性はbeanのタイプに解析します.したがって、name属性を使用すると、byNameの自動注入ポリシーを使用し、type属性を使用する場合はbyType自動注入ポリシーを使用します.nameもtype属性も指定されていない場合は、反射機構によりbyName自動注入術を使用します.
     
    6:@Resourceと@Autowiredは違います.
    @Resourceも@Autowiredもbeanの注入時に使います.実は@Resourceはspringの注釈ではなく、jdk拡張カバンjavax.annotations.Resourceの中のもので、導入して使う必要がありますが、springはこの注釈の使用をサポートしています.
    1.@Autowired
    @Autowired Springのための注釈は、パッケージorg.springframe ebook.beans.factory.annotation.Autowiredを導入する必要があります.byTypeだけで注入します.
    @Autowired注释は、依存対象をタイプ(byType)で組み立てることで、デフォルトでは依存対象が存在する必要があります.null値を許可すれば、required属性はfalseに設定できます.
    名前通りに組み立てたいなら、@Qualfier注解と一緒に使うことができます. ,以下のとおりです
    @Autowired  
    @Qualfier(「student uation」) に等しい @Resource(name=「student onotation」)