三 Spring 註解注入

2021-09-25 09:10:46 字數 3045 閱讀 7201

目錄

一、@component

二、3個@component註解衍生註解

三、@autowired:自動根據型別注入

四、@scope("prototype")     多例、單例的配置(預設singleton單例)

首先簡單說明一下什麼是註解注入,回顧之前我們的案例,不管是裝配物件(bean),還是注入物件(bean)都需要在xml配置檔案中寫大量的

這種配置,那麼如果我們使用註解注入,xml檔案中就不需要再重複配置這些bean了,直接幾行**就搞定,想想就舒服多了。註解的書寫通常是 @***x 寫在屬性、方法、類上面。

下面開始介紹常用的spring註解

泛指各種元件,就是說當我們的類不屬於各種歸類的時候(不屬於action,service,dao),我們就可以使用@component來標註這個類。

下面我們來舉例具體用途。

首先建立乙個演示類 demonstration.class,裡面就只有乙個新增方法

package com.xyl.spring.test;

public class demonstration

}

如果我們之前不使用註解的時候,xml配置檔案就得寫乙個

如果我們又要獲取另乙個物件***,就得又配置乙個bean,然後各種+++

現在使用@component就相當於我們在xml配置檔案中配置了

@component   相當於:

(沒有id)

@component("demonstration")

相當於:

(有id)

下面使用註解@component

在demonstration類中加上註解

package com.xyl.spring.test;

@component

public class demonstration

}

然後在測試**中獲取demonstration物件,呼叫add方法

@test

public void test()

注意:現在註解還不起作用。最後我們需要修改一下beans-info.xml配置檔案

1.新增beans屬性:

xmlns:context=""
2.修改beans屬性

xsi:schemalocation="

/spring-beans.xsd

/spring-context.xsd"

3.開啟註解,設定掃瞄註解位址

beans-info.xml檔案:

<?xml version="1.0" encoding="utf-8"?>

執行結果:

配置完後,以後我們使用物件就可以直接新增註解獲取就可以了,不用再去修改xml檔案

@repository(「名稱」):dao層

@service(「名稱」):service層

@controller(「名稱」):web層

功能一樣是取代,但是與component註解不同的是,這三個衍生註解是標註在特定的分層;

舉個栗子:

我們平時頁面呼叫action方法程式的流程是   (web)action——>service——>dao

如果所有層都用component註解,那麼spring容器將不知道先建立哪一層的物件。所以需要這三個衍生註解來區分

用不同註解注釋不同層;

這裡我們申明乙個物件,但是不例項化物件。然後在宣告物件上面加上@autowired註解,spring容器將自動幫我們根據型別例項化注入。

舉個栗子:我們就拿action中呼叫service方法舉例

那麼,我們只要在userservice上面加上@autowired註解,spring容器就會自己去幫我們找到userservice這個物件並幫我們例項化

被@scope("prototype")註解標註的物件會被設定成多例模式,每次呼叫都將 new乙個新物件

預設是@scope("singleton")單例模式,預設需要使用該註解

寫的spring系列:spring框架完全掌握

spring註解注入

註解 就是乙個類,使用 註解名稱 開發中 使用註解 取代 xml配置檔案。預設情況下註解不生效,需要開啟註解功能。通過下面的配置開啟 component取代 component沒有配置id時,通過型別獲取bean,型別可以寫介面類也可以寫實現類 2 component id 取代 web開發,提供3...

Spring 註解及註解注入

compoment 標註成spring乙個普通的bean autowired 被用來實現自動 裝配,可以用來標註成員變數 方法 建構函式。當出現多個同型別當bean時 如兩個類都實現了同乙個介面 這時候spring不知道該繫結哪個實現類,就會丟擲beancreationexception異常。這時候...

Spring註解注入問題

今天做乙個ssm的登陸demo,在使用註解將乙個service注入的時候,總是報 org.springframework.beans.factory.nosuchbeandefinitionexception no matching bean of type com.st.service.iuser...