Spring註解之 Autowired不成熟的理解

2021-10-09 10:11:17 字數 1752 閱讀 3383

首先介紹一下spring的常用註解:

@service 業務層(spring)

@controller 表現層(springmvc)

@repository 持久層(dao層,mybatis)

以上三個註解都可以在value屬性中設定spring的bean的別名,位置放在public class上面一行即可,但是如果不同bean之間有關聯關係,既是乙個bean是另乙個bean的內部屬性的時候,這三個註解就不夠用了。

最常用的就是@autowired,該註解可以自動裝配具有相容型別的單個bean屬性,位置放在內部變數定義的上面一行就可以,放在set方法前也可以。

使用@autowired時的注意事項:

乙個@autowired註解只能標記乙個變數,,若要標記兩個變數,則要在兩個變數前都加上@autowired

當有被標記的變數為空時,系統會自動丟擲異常,此時可通過設定@autowired(required = false),返回null,而不報錯。

當被標記的變數出現多型現象,既是對應的類不止乙個,(標記乙個介面變數,然而實現此介面的類不止乙個)此時有兩種解決辦法:

乙個是在想要被引用的某乙個介面的實現類前使用value=「介面名」;

另乙個就是通過@qualifier(「實現類名」)來指定要裝配的實現類

package com.spring.annotation.service;

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.beans.factory.annotation.qualifier;

import org.springframework.stereotype.service;

import com.spring.annotation.testobject;

import com.spring.annotation.repository.userrepository;

@service

public

class

userservice

}

此種方法還可以將註解放到set方法前:

@service

public

class

userservice

@autowired

(required =

false

)private testobject testobject;

public

void

add(

)}

還有比較常用的方式是:

@service

public

class

userservice

@autowired

(required =

false

)private testobject testobject;

public

void

add(

)}

好了,今天就說到這吧,覺得有點煩(今日心情)。。。

spring註解之 Scope註解

1,scope註解是什麼 scope註解是springioc容器中的乙個作用域,在 spring ioc 容器中具有以下幾種作用域 基本作用域singleton 單例 prototype 多例 web 作用域 reqeust session globalsession 自定義作用域 a.single...

spring註解之 value註解

首先在xml中定義乙個bean如下 把對應的引數以property中value的形式注入 測試 如下 根據bean id獲取bean物件 system.out.println bean 執行結果如下 可以發現已經獲取到xml中配置的屬性了 user username zhangsan,age 26 ...

spring註解之 Lazy註解

1,lazy註解是什麼 lazy註解用於標識bean是否需要延遲載入,原始碼如下 target retention retentionpolicy.runtime documented public inte ce lazy只有乙個引數,預設是true,也就是說只要加了這個註解就會延遲載入 2,la...