国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring使用注解存儲(chǔ)Bean對(duì)象

這篇具有很好參考價(jià)值的文章主要介紹了Spring使用注解存儲(chǔ)Bean對(duì)象。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


在前一篇博客中( Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL))介紹的是通過(guò)配置文件注冊(cè)對(duì)象從而存儲(chǔ)到 Spring 中,這種方式其實(shí)還是挺繁瑣的。

實(shí)際上,在使用學(xué)習(xí)使用 Spring過(guò)程中,當(dāng)我們要實(shí)現(xiàn)一個(gè)功能的時(shí)候,先應(yīng)該考慮的是有沒(méi)有相應(yīng)的注解是實(shí)現(xiàn)對(duì)應(yīng)功能的,Spring 中很多功能的配置都是可以依靠注解實(shí)現(xiàn)的,而本篇中介紹的是使用注解來(lái)存儲(chǔ) Bean 對(duì)象。

一. 配置掃描路徑

首先還是要?jiǎng)?chuàng)建 Spring 項(xiàng)目,這里有問(wèn)題還是去看我上一篇博客。當(dāng)創(chuàng)建好項(xiàng)目后,我們的第一步就是配置掃描路徑,這一步驟非常關(guān)鍵的,這里錯(cuò)了,之后的的操作就都不會(huì)生效了。

我們?cè)?code>resources目錄下創(chuàng)建一個(gè)spring-config.xml配置文件,用來(lái)設(shè)置掃描的路徑,在配置文件中添加如下內(nèi)容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:content="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <content:component-scan base-package=""></content:component-scan>
</beans>

其中<content:component-scan base-package=""></content:component-scan>里面 base-package的值設(shè)置為你需要掃描對(duì)象的根路徑,這個(gè)路徑從java目錄開(kāi)始,比如我在如圖中的com.tr.demo目錄下創(chuàng)建類:
Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解
那么這個(gè)配置文件中根路徑就為com.tr.demo,所以我們將base-package的值設(shè)置為com.tr.demo

<content:component-scan base-package="com.tr.demo"></content:component-scan>

二. 使用注解儲(chǔ)存Bean對(duì)象

想要使用注解,那得先知道能使用哪些注解,在 Spring 中有五大類注解和方法注解,分別為:

  1. 五大類注解:@Controller(控制器)、@Service(服務(wù))、@Repository(倉(cāng)庫(kù))、@Component(組件)、@Configuration(配置)。
  2. 方法注解:@Bean。

1. 使用五大類注解儲(chǔ)存Bean

首先,我們來(lái)了解如何使用五大類注解來(lái)儲(chǔ)存對(duì)象,先以@Controller注解為例,我們有如下的代碼:

package com.tr.demo;

import org.springframework.stereotype.Controller;

@Controller
public class UserController {
    public void sayHi() {
        System.out.println("Hi, UserController~");
    }
}

像這樣在掃描路徑下創(chuàng)建類,并在類上加上@Controller注解就將Bean存儲(chǔ)到容器當(dāng)中了。

接下來(lái)就要從 Spring 中讀取出我們的對(duì)象,這里還是先使用依賴查找的方式來(lái)獲取 Bean,使用五大類注解,默認(rèn)情況下,Bean 的名字就是原類名首字母小寫(xiě)(小駝峰)。

import com.tr.demo.UserController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class APP {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //獲取對(duì)象時(shí)使用類名的小駝峰形式作為 name 參數(shù)
        UserController userController =  context.getBean("userController", UserController.class);
        userController.sayHi();
    }
}

運(yùn)行結(jié)果:
Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解
要注意,是使用了五大類注解創(chuàng)建的類且類必須要在前面我們配置的掃描路徑下(包括子包)才能將 Bean 存儲(chǔ)到 Spring 當(dāng)中,否則是無(wú)效的,所以這個(gè)掃描路徑也叫做根路徑。

設(shè)置根路徑其實(shí)也是為了提高程序的性能,因?yàn)槿绻辉O(shè)置根路徑,Spring 就會(huì)掃描項(xiàng)目文件中所有的目錄,但并不是所有類都需要儲(chǔ)存到 Spring當(dāng)中,這樣性能就會(huì)比較低,設(shè)置了根路徑,Spring 就只掃描該根路徑下所有的目錄就可以了,提高了程序的性能。

上面只使用了 @Controller,那么我們?cè)賮?lái)驗(yàn)證一下其他四個(gè)注解可不可以達(dá)到同樣的目的,同時(shí)為了驗(yàn)證上面的結(jié)論,我們?cè)?code>com.tr.demo目錄下再創(chuàng)建一個(gè)inner目錄,在根路徑外在創(chuàng)建一個(gè)類Student使用類注解。

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

package com.tr.demo.inner;
import org.springframework.stereotype.Component;

@Component
public class UserComponent {
    public void sayHi() {
        System.out.println("Hi, UserComponent~");
    }
}

package com.tr.demo.inner;
import org.springframework.context.annotation.Configuration;

@Configuration
public class UserConfiguration {
    public void sayHi() {
        System.out.println("Hi, UserConfiguration~");
    }
}

package com.tr.demo.inner;
import org.springframework.stereotype.Repository;

@Repository
public class UserRepository {
    public void sayHi() {
        System.out.println("Hi, UserRepository~");
    }
}

package com.tr.demo.inner;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    public void sayHi() {
        System.out.println("Hi, UserService~");
    }
}

import com.tr.demo.UserController;
import com.tr.demo.inner.UserComponent;
import com.tr.demo.inner.UserConfiguration;
import com.tr.demo.inner.UserRepository;
import com.tr.demo.inner.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class APP {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //獲取對(duì)象時(shí)使用類名的小駝峰形式作為 name 參數(shù)
        UserController userController =  context.getBean("userController", UserController.class);
        userController.sayHi();
        UserService service =  context.getBean("userService", UserService.class);
        service.sayHi();
        UserConfiguration configuration =  context.getBean("userConfiguration", UserConfiguration.class);
        configuration.sayHi();
        UserComponent component =  context.getBean("userComponent", UserComponent.class);
        component.sayHi();
        UserRepository repository =  context.getBean("userRepository", UserRepository.class);
        repository.sayHi();
    }
}

運(yùn)行結(jié)果:

五大類注解效果都是一樣的,而不在根路徑下的Student是無(wú)效的。
Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

還需要知道的是使用注解存儲(chǔ)的 Bean 和使用XML存儲(chǔ)的的 Bean 是可以一同使用的,比如我們將將剛剛有問(wèn)題的Student重新通過(guò)XML的方式進(jìn)行存儲(chǔ)。

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

運(yùn)行結(jié)果:

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

2. 為什么要有五大類注解?

既然都五大類完成的是同樣的工作,那為什么要有五大類注解呢?

其實(shí)五大類注解主要是為了規(guī)范 Java 項(xiàng)目的代碼,Java 項(xiàng)目的標(biāo)準(zhǔn)分層如下:

  1. 控制層(Controller)
  2. 服務(wù)層(Service)
  3. 數(shù)據(jù)持久層(Dao)

而五大類注解便是對(duì)應(yīng)著不同的層級(jí)別使用的,讓程序猿看到某一個(gè)注解就可以明確這個(gè)了類是做什么的。

  • @Controller:控制器,校驗(yàn)用戶請(qǐng)求數(shù)據(jù)的正確性(安保系統(tǒng));直接和前端打交道,校驗(yàn)前端發(fā)來(lái)請(qǐng)求是參數(shù)和合法性。

  • @Service:服務(wù),編排和調(diào)度具體執(zhí)行方法的(客服中心);不會(huì)直接操作數(shù)據(jù)庫(kù),根據(jù)請(qǐng)求判斷具體調(diào)用哪個(gè)方法。

  • @Repository:數(shù)據(jù)持久層,直接和數(shù)據(jù)庫(kù)交互(實(shí)際業(yè)務(wù)的執(zhí)行),也叫DAO層(data access object)。

  • @Component:組件(工具類層),為整個(gè)項(xiàng)目存放一些需要使用的組件,但又和其他層沒(méi)有什么實(shí)際交互。

  • @Configuration 配置項(xiàng)(項(xiàng)目中的一些配置)。

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

包括企業(yè)中也是按照這樣的結(jié)構(gòu)來(lái)將項(xiàng)目分層的,典型的比如阿里,它只是在標(biāo)準(zhǔn)分層在服務(wù)層(Service)做了一個(gè)擴(kuò)展,劃分的更加細(xì)致詳細(xì)了。

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

五大類注解主要起到的是“見(jiàn)名知意”的作用,代碼層面上來(lái)看,作用是類似的,我們?nèi)ゲ榭次宕箢愵愖⒔獾脑创a看一看。

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解
可以看到五大類的源碼中除了 @Component 以外,其他四大類注解中都包含了 @Component 注解的功能,這四大類注解都是基于 @Component 實(shí)現(xiàn)的,是 @Component 拓展。

3.4有關(guān)獲取Bean參數(shù)的命名規(guī)則

上文中在使用依賴查找的方式獲取Bean時(shí),getBean方法的BeanName是使用類名的小駝峰形式(即類名的首字母小寫(xiě)),這是因?yàn)槭褂米⒔鈨?chǔ)存對(duì)象時(shí),默認(rèn)會(huì)將類名的小駝峰形式設(shè)置為 Bean 的名字,但并不是完全依照這個(gè)規(guī)則的,是有特殊情況的。

比如,我們創(chuàng)建一個(gè)類,將它的前兩個(gè)字母大寫(xiě),如UConfig,此時(shí)來(lái)看使用類名的小駝峰形式還能不能獲取到 Bean。

package com.tr.demo;

import org.springframework.stereotype.Repository;

@Repository
public class UConfig {
    public void sayHi(){
        System.out.println("Hi, UConfig~");
    }
}

啟動(dòng)類

import com.tr.demo.UConfig;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class APP2 {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        UConfig uConfig=  context.getBean("uConfig", UConfig.class);
        uConfig.sayHi();
    }
}

運(yùn)行結(jié)果:
Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解
可以看到程序報(bào)錯(cuò)了,說(shuō)沒(méi)有找到beanNameuConfig的對(duì)象,那此時(shí)的beanName是什么呢?

此時(shí)再來(lái)試一下原本的類名(大駝峰),看能不能獲?。?/p>

UConfig uConfig=  context.getBean("UConfig", UConfig.class);

運(yùn)行結(jié)果:
Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解
此時(shí)就獲取到了,好像多少有點(diǎn)玄學(xué)在里面,我們來(lái)翻一翻源碼,看一看這是什么原因。

雙擊Shift進(jìn)行全局搜索,上面是根于對(duì)象名稱來(lái)找到對(duì)象的,所以我們輸入beanName,試著搜索一下:

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

我們會(huì)發(fā)現(xiàn)有AnnotationBeanNameGenerator類與BeanNameGenerator接口,那我們就試著點(diǎn)到AnnotationBeanNameGenerator類源碼看一看。

正常點(diǎn)開(kāi)后看到的應(yīng)該是 IDEA 將.class文件反編譯出來(lái)的代碼,缺少注釋和明確的變量命名。

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

我們點(diǎn)擊Download Sources將 Spring 源碼下載下來(lái)即可,此時(shí)我們?cè)谠谠创a中就能看到下面的方法,看名字也知道,用來(lái)建立默認(rèn)的BeanName的。

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

返回值是Introspector.decapitalize方法的返回值,再點(diǎn)進(jìn)去看看這個(gè)方法。

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

此時(shí)我們就能分析得出結(jié)論,如果類名長(zhǎng)度大于1并且滿足第一個(gè)與第二個(gè)字母為大寫(xiě),則構(gòu)造的BeanName就為原類名,其他正常情況為類名的小駝峰形式,這就解釋了UConfig類的BeanName為什么是原類名了。
而且我們會(huì)發(fā)現(xiàn)這個(gè)方法所在類是來(lái)自于jdk的。
Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

所以,BeanName的規(guī)范命名規(guī)則并不是 Spring 獨(dú)創(chuàng)的,而依照 Java 標(biāo)準(zhǔn)庫(kù)的規(guī)則進(jìn)行的。

  1. 如果類名不存在或類名為空字符串,BeanName為原類名。
  2. 如果類名字長(zhǎng)度大于1,且第一個(gè)與第二個(gè)字符為大寫(xiě),BeanName為原類名。
  3. 其他情況,BeanName為原類名的小駝峰形式。

三. 使用方法注解儲(chǔ)存Bean對(duì)象

1. 方法注解儲(chǔ)存對(duì)象的用法

五大類注解是添加到某個(gè)類上的,而方法注解是放到方法上的,當(dāng)一個(gè)方法返回的是一個(gè)具體的實(shí)例對(duì)象時(shí),我們就可以使用方法注解@Bean來(lái)將對(duì)象儲(chǔ)存到 Spring,但是單單使用一個(gè)@Bean是不能夠成功儲(chǔ)存對(duì)象的,還需要在方法所在類上使用五大類注解才行,比如搭配一 個(gè)@Component 注解,方法注解是不能夠單獨(dú)使用的,@Bean注解必須要搭配五大類注解一起使用(Spring為了提升性能所做的規(guī)定,畢竟造方法的成本太低了,不能去掃描整個(gè)項(xiàng)目的方法吧)。

還是要注意使用必須是在根路徑下。

比如我們有一個(gè)普通文章的實(shí)體類ArticleInfo

package com.tr.demo.model;

import java.time.LocalDateTime;

/**
 * 普通的文章實(shí)體類
 */
public class ArticleInfo {
    private int aid;
    private LocalDateTime createtime;
    private String title;
    private String author;
    private String content;
    
    public void setAid(int aid) {
        this.aid = aid;
    }
    public void setCreatetime(LocalDateTime createtime) {
        this.createtime = createtime;
    }
    public void setTitle(String title) {
        this.title = title;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        return "ArticleInfo{" +
                "aid=" + aid +
                ", createtime=" + createtime + "\n" +
                ", title='" + title + '\'' +
                ", author='" + author + '\'' + "\n" +
                ", content='" + content + '\'' +
                '}';
    }
}

下面演示使用@Bean方法注解儲(chǔ)存對(duì)象

package com.tr.demo;

import com.tr.demo.model.ArticleInfo;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;
import java.time.LocalDateTime;

@Controller
public class Articles {
    @Bean// 將當(dāng)前方法返回的對(duì)象存儲(chǔ)到 IoC 容器
    public ArticleInfo getArt(){
        // 偽代碼(實(shí)際上這里的 Bean 不是 new 出來(lái)的)
        ArticleInfo articleInfo = new ArticleInfo();
        articleInfo.setAid(1);
        articleInfo.setCreatetime(LocalDateTime.now());
        articleInfo.setTitle("夏日絕句");
        articleInfo.setAuthor("李清照");
        articleInfo.setContent("生當(dāng)做人杰,死亦為鬼雄。至今思項(xiàng)羽,不肯過(guò)江東。");
        return articleInfo;
    }

    public void sayHi(){
        System.out.println("Hi, Articles~");
    }
}

獲取方法注解儲(chǔ)存的對(duì)象時(shí),傳入的BeanName參數(shù)值默認(rèn)值就是方法名,我上面的代碼中方法名為getArt,所以獲取時(shí),就使用getArt作為參數(shù)來(lái)進(jìn)行獲取。

import com.tr.demo.model.ArticleInfo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class APP3 {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        ArticleInfo article =  context.getBean("getArt", ArticleInfo.class);

        System.out.println(article);
    }
}

運(yùn)行結(jié)果:
Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

2. @Bean的重命名

獲取方法注解儲(chǔ)存的對(duì)象時(shí),傳入的BeanName參數(shù)值默值為方法名,但像上面那樣返回對(duì)象的方法名稱往往是getXXX這樣式取名的,雖然在語(yǔ)法與實(shí)現(xiàn)上是沒(méi)有問(wèn)題的,但實(shí)際開(kāi)發(fā)寫(xiě)出這樣的代碼,看起來(lái)還是比較別扭的。

實(shí)際上注解 @Bean 是可以加參數(shù)的,給儲(chǔ)存的對(duì)象起別名,像下面這個(gè)樣子。

@Controller
public class Articles {
    @Bean("article")// 將當(dāng)前方法返回的對(duì)象存儲(chǔ)到 IoC 容器
    public ArticleInfo getArt(){
        // 偽代碼(實(shí)際上這里的 Bean 不是 new 出來(lái)的)
        ArticleInfo articleInfo = new ArticleInfo();
        articleInfo.setAid(1);
        articleInfo.setCreatetime(LocalDateTime.now());
        articleInfo.setTitle("夏日絕句");
        articleInfo.setAuthor("李清照");
        articleInfo.setContent("生當(dāng)做人杰,死亦為鬼雄。至今思項(xiàng)羽,不肯過(guò)江東。");
        return articleInfo;
    }

    public void sayHi(){
        System.out.println("Hi, Articles~");
    }
}

也可以給 Bean 設(shè)置多個(gè)別名,總結(jié)起來(lái)有如下幾種方式:

//方式一(省略參數(shù)名的情況下默認(rèn)是name)
@Bean("article1")
//方式二
@Bean(name = "article2")
//方式三
@Bean(value = "article3")
//起多個(gè)別名
@Bean(name = {"article4", "article5"})
@Bean(value = {"article6", "article7"})
@Bean({"article8", "article9", "article10"})

我們按照第 9 行的方式設(shè)置,此時(shí)獲取方法注解儲(chǔ)存的對(duì)象就能夠使用別名來(lái)進(jìn)行獲取。

Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

import com.tr.demo.model.ArticleInfo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class APP4 {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        ArticleInfo article1 =  context.getBean("article6", ArticleInfo.class);
        System.out.println(article1);
        System.out.println("-----------------------------------------------------");
        ArticleInfo article2 =  context.getBean("article7", ArticleInfo.class);
        System.out.println(article2);
        System.out.println("-----------------------------------------------------");
    }
}

運(yùn)行結(jié)果:
Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解

再想一下,當(dāng)一個(gè) Bean 有別名了,那使用之前那個(gè)方法名還能夠獲取到對(duì)象嗎?嘗試一下:

import com.tr.demo.model.ArticleInfo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class APP5 {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        ArticleInfo article =  context.getBean("getArt", ArticleInfo.class);
        System.out.println(article);
    }
}

運(yùn)行結(jié)果:

此時(shí)就能發(fā)現(xiàn)是獲取不到的
Spring使用注解存儲(chǔ)Bean對(duì)象,JavaEE,spring,java,后端,項(xiàng)目分層,注解
所以使用 @Bean 存儲(chǔ)對(duì)象的beanName命名規(guī)則是,當(dāng)沒(méi)有設(shè)置name/value屬性時(shí),此時(shí) Bean 的默認(rèn)名字就是方法名,一旦添加了別名name/value屬性后,就只能通過(guò)重命名的別名來(lái)獲取 Bean 了,默認(rèn)的使用方法名獲取 Bean 對(duì)象就不能使用了。

還要簡(jiǎn)單注意一下,@Bean 使用時(shí),同一類如果多個(gè) Bean 使用相同的名稱,此時(shí)程序執(zhí)行是不會(huì)報(bào)錯(cuò)的,他會(huì)根據(jù)類加載順序和類中代碼從上至下的的順序,將第一個(gè) Bean 存放到 Spring 中,但第一個(gè)之后的對(duì)象就不會(huì)被存放到容器中了,也就是只有在第一次創(chuàng)建 Bean 的時(shí)候會(huì)將對(duì)象和 Bean 名稱關(guān)聯(lián)起來(lái),后續(xù)再有相同名稱的Bean存儲(chǔ)時(shí)候,容器會(huì)自動(dòng)忽略。

還可以通過(guò)類注解 @Order 注解控制類加載順序(值越小,優(yōu)先級(jí)越高),進(jìn)而影響 Bean 的存放的先后順序,這些也比較簡(jiǎn)單,就不做演示了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-596397.html

到了這里,關(guān)于Spring使用注解存儲(chǔ)Bean對(duì)象的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【JavaEE】DI與DL的介紹-Spring項(xiàng)目的創(chuàng)建-Bean對(duì)象的存儲(chǔ)與獲取

    【JavaEE】DI與DL的介紹-Spring項(xiàng)目的創(chuàng)建-Bean對(duì)象的存儲(chǔ)與獲取

    Spring的開(kāi)發(fā)要點(diǎn)總結(jié) Spring的初步了解博客:【JavaEE】JavaEE進(jìn)階:框架的學(xué)習(xí) - Spring的初步認(rèn)識(shí)_s:103的博客-CSDN博客 就不帶大家回顧了~ 從框架獲取的對(duì)象稱為獲取【Bean對(duì)象】! Java是咖啡,Bean就是\\\"咖啡豆\\\",也就是“對(duì)象” Spring項(xiàng)目開(kāi)發(fā)就是 開(kāi)業(yè) , 放咖啡豆到罐子里 , 后

    2024年02月16日
    瀏覽(22)
  • 使用Spring的五大類注解讀取和存儲(chǔ)Bean

    使用Spring的五大類注解讀取和存儲(chǔ)Bean

    目錄 1.存儲(chǔ)Bean對(duì)象的注解 1.1 五大類注解 1.2 方法注解 1.3添加注解的依賴 2.注解的使用 2.1??controller注解 2. 2Service注解 ?2.3.Resopsitory注解 2.4Component注解 2.5Configuration注解 2.6 注解之間的關(guān)系 3.方法注解 3.1 方法注解要配合類注解來(lái)使用。 3.2 重命名Bean 4.獲取Bean對(duì)象(對(duì)象裝配

    2024年02月01日
    瀏覽(23)
  • JavaEE——Spring中存取Bean的注解

    JavaEE——Spring中存取Bean的注解

    目錄 一、存儲(chǔ)Bean對(duì)象 1、定義 2、存儲(chǔ)方式 (1)、類注解 【1】、@Controller(控制器存儲(chǔ)) 【2】、@Service(服務(wù)存儲(chǔ)) 【3】、@Repository(倉(cāng)庫(kù)存儲(chǔ)) 【4】、@Component(組件存儲(chǔ)) 【5】、@Configuration(配置存儲(chǔ)) (2)、方法注解@Bean 3、重命名Bean 二、獲取Bean對(duì)象 1、注入關(guān)

    2024年02月16日
    瀏覽(24)
  • Spring使用注解存儲(chǔ)和讀取對(duì)象

    Spring使用注解存儲(chǔ)和讀取對(duì)象

    之前我們存儲(chǔ)Bean時(shí),需要在spring-config.xml中添加bean注冊(cè)才行,這樣的方式并不簡(jiǎn)單。我們要想 更簡(jiǎn)單的存儲(chǔ)和讀取對(duì)象的核心是使用注解 1.使用類注解(五大類注解): @Controller:控制器,驗(yàn)證用戶請(qǐng)求的數(shù)據(jù)正確性(安保系統(tǒng)) @Service:服務(wù)層,編排和調(diào)度具體執(zhí)行方法的(客服

    2023年04月19日
    瀏覽(26)
  • Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象、使用注解存取對(duì)象

    Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象、使用注解存取對(duì)象

    我們知道物件都會(huì)隨著時(shí)代的發(fā)展,越變?cè)胶?jiǎn)單的。Spring 框架也不意外;我們?cè)谥按鎯?chǔ)Bean對(duì)象是在配置文件中添加 bean/bean 來(lái)存入Bean對(duì)象到Spring當(dāng)中的,使用那個(gè)類對(duì)象就要存入那個(gè),一個(gè)兩個(gè)類對(duì)象還好,如果需要的對(duì)象多了,就會(huì)非常麻煩?,F(xiàn)在,隨著 Spring 發(fā)展不用

    2024年02月11日
    瀏覽(23)
  • Spring五大類注解 || Bean的更簡(jiǎn)單存儲(chǔ)

    Spring五大類注解 || Bean的更簡(jiǎn)單存儲(chǔ)

    目錄 前言: 五大類注解 @Controller @Service @Repository @Component @Configuration JavaEE標(biāo)準(zhǔn)分層 阿里分層結(jié)構(gòu) BeanName命名規(guī)則 方法注解 @Bean 注入方式取Bean 屬性注入 Setter注入 構(gòu)造方法注入 @Resource ? ? 使用Spring容器,為我們程序開(kāi)發(fā)帶來(lái)了很大的遍歷。那么我們就需要學(xué)習(xí)Spring帶來(lái)的

    2023年04月23日
    瀏覽(18)
  • spring中存儲(chǔ)和獲取bean對(duì)象

    spring中存儲(chǔ)和獲取bean對(duì)象

    存儲(chǔ) Bean 分為以下 2 步: 存儲(chǔ) Bean 之前,先得有 Bean 才?,因此先要?jiǎng)?chuàng)建?個(gè) Bean, 說(shuō)白了也就是寫(xiě)一個(gè)類。 告訴spring,把這個(gè)類的對(duì)象存起來(lái)。 編寫(xiě) User 類, 有 sayHi 方法。 告訴 spring ,把這個(gè)類的對(duì)象存起來(lái)。 在配置文件中可以通過(guò) bean 標(biāo)簽來(lái)告訴 spring 把對(duì)象存起來(lái)。

    2024年02月15日
    瀏覽(24)
  • Spring中Bean對(duì)象的存儲(chǔ)與讀取

    Spring中Bean對(duì)象的存儲(chǔ)與讀取

    在項(xiàng)目的 pom.xml 中添加 Spring 支持 如何選定版本環(huán)境:打開(kāi)官網(wǎng),點(diǎn)擊github圖標(biāo) jdk8最后一個(gè)Spring版本是5.3.x,Spring6.0.x最低需要jdk17 版本沖突問(wèn)題Maven自己處理 version : 可以選擇帶有 RELEASE結(jié)尾或者純數(shù)字結(jié)尾,這樣的版本更穩(wěn)定 項(xiàng)目下創(chuàng)建一個(gè)main方法的啟動(dòng)類 存儲(chǔ) Bean 之前

    2024年01月24日
    瀏覽(21)
  • Spring——更快捷的存儲(chǔ) / 獲取Bean對(duì)象

    Spring——更快捷的存儲(chǔ) / 獲取Bean對(duì)象

    本人是一個(gè)普通程序猿!分享一點(diǎn)自己的見(jiàn)解,如果有錯(cuò)誤的地方歡迎各位大佬蒞臨指導(dǎo),如果你也對(duì)編程感興趣的話,互關(guān)一下,以后互相學(xué)習(xí),共同進(jìn)步。這篇文章能夠幫助到你的話,勞請(qǐng)大家點(diǎn)贊轉(zhuǎn)發(fā)支持一下! 上篇文章中,向Spring容器中添加對(duì)象,還要去配置文件里手動(dòng)添

    2024年02月15日
    瀏覽(33)
  • Spring更簡(jiǎn)單的存儲(chǔ)和讀取Bean對(duì)象

    Spring更簡(jiǎn)單的存儲(chǔ)和讀取Bean對(duì)象

    目錄 1.第一個(gè)Spring項(xiàng)目 2.存儲(chǔ)Bean對(duì)象 2.1 準(zhǔn)備工作 2.2?五大類注解 2.3?方法注解@Bean 2.4 Bean對(duì)象的默認(rèn)命名規(guī)則 3. 讀取Bean對(duì)象 3.1 屬性注入 3.2 setter注入 3.3 構(gòu)造方法注入 3.4 注入異常問(wèn)題 3.5 注入方式優(yōu)缺點(diǎn) 3.6 @Autowired和@Resource的區(qū)別 在學(xué)習(xí)更簡(jiǎn)單的方式來(lái)讀取和存儲(chǔ)Bean對(duì)象

    2024年02月03日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包