基礎5 註解詳解(元件註冊)

2021-10-08 08:02:19 字數 3884 閱讀 5756

@bean表示乙個方法例項化、配置或者初始化乙個spring ioc容器管理的新物件。

@component自動被comonent掃瞄。表示被註解的類會自動被component掃瞄。

@repository用於持久層,用來表示乙個持久層bean,即資料訪問層dao元件。

spring mvc採用經典的三層分層控制結構,在持久層、業務層、控制層分別採用@repository、@service、@controller註解來對分層中的相關類進行註解。

這個在學習spring data時會說明。

@service表示被註解的類是位於業務層的業務component。

spring mvc採用經典的三層分層控制結構,在持久層、業務層、控制層分別採用@repository、@service、@controller註解來對分層中的相關類進行註解。

@controller表明被註解的類是控制component,主要用於展現層。

spring mvc採用經典的三層分層控制結構,在持久層、業務層、控制層分別採用@repository、@service、@controller註解來對分層中的相關類進行註解。

@controller標記的類,要麼在xml中進行定義,要麼在中進行自動掃瞄。

之前通過只會發現@controller、@service、@repository、@component註解。

預設use-default-filters="true",即預設掃瞄@component註解及其子註解,可以配置filter過濾只掃瞄哪些註解、不掃瞄哪些註解。

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.componentscan;

import org.springframework.context.annotation.configuration;

import org.springframework.context.annotation.filtertype;

import org.springframework.stereotype.controller;

import org.springframework.stereotype.service;

/*** @configuration:標準配置類

* @componentscan:發現@service、@repository、@component註解,該註解作用類似於,

* 其中的value引數用來指定掃瞄的包路徑,

* includefilters則是包含什麼,其要求是乙個componentscan.filter

* excludefilters則是不包含什麼,其要求是乙個componentscan.filter,其中type = filtertype.annotation表達的意思是按照註解進行過濾,

* 而classes是乙個陣列,裡面可以填寫各種註解的class物件

* 這裡可以參考之前的xml配置,基本與xml是完全一樣的。

* 2020 - 07 - 16

* 16:21

*/@configuration

@componentscan(

value = "com.spring.annotation",

excludefilters = )

})public class mainconfig }

bean預設都是單例項,通過@scope來改變這種情況。預設單例項的時候,ioc容器啟動的時候就會建立物件放到ioc容器中,以後每次獲取都是直接從容器中獲取。

多例項情況下,每次獲取的時候才會呼叫方法,來建立物件,每呼叫一次方法,就新建立乙個物件例項。

/*** @bean,型別為返回值的型別,id預設是方法名(大小寫與方法名完全一致)

* */

@bean

@scope("prototype")

public persion persion()

只能用於單例項的bean。因為單例項bean會在ioc容器啟動的時候就被初始化,所謂懶載入,就是ioc容器啟動時暫不建立物件,直到第一次獲取該bean的時候再去建立物件並初始化。

/*** @bean,型別為返回值的型別,id預設是方法名(大小寫與方法名完全一致)

* */

@bean

@lazy

public persion persion()

@target()

@retention(retentionpolicy.runtime)

@documented

public @inte***ce conditional

該註解可以用在類上,也可以用在方法上;引數是condition介面的實現類即可。

當用於註解類的時候,則只有滿足條件,這個類中所有的方法才能被註冊bean。

當用於註解方法的時候,則只有滿足條件,這個方法才能被註冊bean。

@bean

@lazy

@conditional(myconditional.class)

public persion persion()

import org.springframework.beans.factory.config.configurablelistablebeanfactory;

import org.springframework.beans.factory.support.beandefinitionregistry;

import org.springframework.context.annotation.condition;

import org.springframework.context.annotation.conditioncontext;

import org.springframework.core.env.environment;

import org.springframework.core.type.annotatedtypemetadata;

import sun.misc.osenvironment;

public class myconditional implements condition

return false;}}

如果想把乙個類匯入進來,可以使用@import註解。該註解只能用在類檔案上,而至於被引入的類,不管其有沒有註解,都可以被引入(特別是第三方框架裡的檔案,因為第三方的jar檔案,你是無法修改源**的)。

id預設是類的全類名。

@target()

@retention(retentionpolicy.runtime)

@documented

public @inte***ce import

@import(importtest.class)

@configuration

@componentscan(

value = "com.spring.annotation",

excludefilters = )

})public class mainconfig

擴充套件:可以通過importselector介面來返回乙個陣列,陣列元素就是類檔案的全類名,然後@import註解就會解析這個陣列,然後去載入對應的類檔案。

還可以通過importbeandefinitionregistrar介面,直接自己來註冊乙個bean,不需要@import註解。

注意&符的使用。

java spring mvc註解元件的詳解

spring mvc註解元件的詳解 目錄 1.controller 3.service 4.dao 5.autowried 6.spring的時間date格式的引數的處理 controller controller private logger logger logge ctory public s...

vue元件詳解 元件通訊

元件之間通訊可以用下圖表示 元件關係可分為父子元件通訊 兄弟元件通訊 跨級元件通訊。一 自定義事件 當子元件需要向父元件傳遞資料時,就要用到自定義事件。子元件用 emit 來觸發事件,父元件用 on 來監昕子元件的事件。父元件可以直接在子元件的自定義標籤上使用v on 來監昕子元件觸發的自定義事件,...

03 深入了解元件 元件註冊(註冊方式)

模組系統中 註冊方式 大小寫 小寫kebab case或者pascalcase。eg my component name或者mycomponentname 字串模板 就是反引號。dom 非字串模板。推薦 kebab case,都能使用。註冊方式 全域性註冊 註冊之後可以用在任何新建立的 vue 根例...