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

Spring 中存取 Bean 的相關(guān)注解

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

 Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

目錄

 一、五大類注解

1、五大類注解存儲(chǔ)Bean對(duì)象

1.1@Controller(控制器儲(chǔ)存)

1.2@Service(服務(wù)存儲(chǔ))

1.3@Repository(倉庫存儲(chǔ))

1.4@Component(組件存儲(chǔ))

1.5@Configuration(配置存儲(chǔ))

 2、五大類注解小結(jié)

2.1為什么要這么多類注解

2.2 五大類注解之間的關(guān)系 

二、方法注解

1.方法注解的存儲(chǔ)

1.1 @Bean注解的使用

1.2 @Bean方法的重命名 

2.方法注解的獲取

2.1 屬性注入

2.2 Setter注入

2.3 構(gòu)造方法注入

三、總結(jié) 

1.三種注?優(yōu)缺點(diǎn)分析 

2.Resource和@Autowired的區(qū)別

 一、五大類注解

在Spring中,想要將Bean存儲(chǔ)到Spring中,一共有兩種注解類型可以實(shí)現(xiàn):

一種是類注解,其包括@Controller,@Service,@Repository,@Component,@Configuration;

另一種則是方法注解,其僅有@Bean

1、五大類注解存儲(chǔ)Bean對(duì)象

1.1@Controller(控制器儲(chǔ)存)

使? @Controller 存儲(chǔ) bean 的代碼如下所示:

package com.java.demo;
import org.springframework.stereotype.Controller;

@Controller
public class User {
    public void sayHi(){
        System.out.println("hi User");
    }
}


我們?cè)僭趩?dòng)類中,簡(jiǎn)單讀取一下存入的對(duì)象

import com.java.demo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

    public static void main(String[] args) {
        ApplicationContext context = new
                ClassPathXmlApplicationContext("srping-config.xml");
        User user = context.getBean("user", User.class);
        user.sayHi();
    }
}


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

Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

1.2@Service(服務(wù)存儲(chǔ))

使? @Service 存儲(chǔ) Bean 的代碼如下所示:

@Service
public class UserService {

    public int add(){
        System.out.println("hi UserService add");
    }
}


 讀取 bean 的代碼:

public class Test {

    public static void main(String[] args) {
        ApplicationContext context = new
                ClassPathXmlApplicationContext("spring-config.xml");
        UserService userService =
                context.getBean("userService", UserService.class);
        userService.add();
    }
}


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

Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

1.3@Repository(倉庫存儲(chǔ))

使用@Repository存儲(chǔ)Bean的代碼如下:

@Repository
public class UserRepository {
    public void add(){
        System.out.println("hi UserRepository add");
    }
}


 讀取Bean的代碼:

public class Test {

    public static void main(String[] args) {
        ApplicationContext context = new
                ClassPathXmlApplicationContext("spring-config.xml");
        UserRepository userRepository =
                context.getBean("userRepository", UserRepository.class);
        userRepository.add();
    }
}


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

Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

1.4@Component(組件存儲(chǔ))

使用@Component組件存儲(chǔ)Bean的代碼如下:

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


 讀取Bean的代碼:

public class Test {

    public static void main(String[] args) {
        ApplicationContext context = new
                ClassPathXmlApplicationContext("spring-config.xml");
        UserComponent userComponent =
                context.getBean("userComponent", UserComponent.class);
        userComponent.add();
    }
}


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

Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

1.5@Configuration(配置存儲(chǔ))

使用@Configuration存儲(chǔ)Bean的代碼如下:

@Configurable
public class UserConfiguration {
    public void add(){
        System.out.println("Hi Configuration add");
    }
}


  讀取Bean的代碼:

public class Test {

    public static void main(String[] args) {
        ApplicationContext context = new
                ClassPathXmlApplicationContext("spring-config.xml");
        UserConfiguration userConfiguration =
                context.getBean("userConfiguration", UserConfiguration.class);
        userConfiguration.add();
    }
}


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

Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

 2、五大類注解小結(jié)

2.1為什么要這么多類注解

讓代碼的可讀性更高,讓程序員能直觀的判斷當(dāng)前類的用途

Spring框架中有很多類注解,每個(gè)注解都有其特定的作用。這些注解使得開發(fā)人員能夠更加方便地配置和管理應(yīng)用程序。以下是其中一些注解的用途:

- @Component:用于將某個(gè)類標(biāo)記為組件,方便自動(dòng)掃描和注冊(cè)為Bean。

- @Controller:用于標(biāo)記控制器類,處理HTTP請(qǐng)求,并返回相應(yīng)結(jié)果。

- @Service:用于標(biāo)記服務(wù)類,對(duì)業(yè)務(wù)邏輯進(jìn)行封裝,通常被Controller層調(diào)用。

- @Repository:用于標(biāo)記倉庫類,封裝對(duì)數(shù)據(jù)的訪問和操作,通常被Service層調(diào)用。

- @Configuration:表明該類是Spring配置類,在其中定義Bean的創(chuàng)建和配置規(guī)則。

這些注解使得Spring框架變得更加靈活、可擴(kuò)展、易用。開發(fā)人員可以根據(jù)需要選擇合適的注解來達(dá)到自己的目的。

Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

2.2 五大類注解之間的關(guān)系 

Spring框架中,常用注解可以歸為五大類,分別是:

  1. @Component注解及其衍生注解:包括@Controller、@Service、@Repository等。這些注解用于在Spring容器中注冊(cè)Bean。

  2. @Configuration注解及其衍生注解:包括@Bean注解。這些注解用于在Spring容器中聲明和配置Bean。

  3. @Autowired注解及其衍生注解:包括@Qualifier、@Resource、@Inject等。這些注解用于進(jìn)行Bean的自動(dòng)注入。

  4. @Value注解及其衍生注解:包括@PropertySource、@ConfigurationProperties等。這些注解用于進(jìn)行配置屬性的注入和讀取。

  5. @Transactional及其衍生注解:包括@Transactional、@TransactionalEventListener等。這些注解用于聲明事務(wù)和監(jiān)聽事務(wù)事件。

這些注解之間的關(guān)系可以總結(jié)為:

  1. @Component及其衍生注解是用于定義Bean的注解,可通過自動(dòng)掃描或手動(dòng)配置的方式注冊(cè)Bean。

  2. @Configuration及其衍生注解用于聲明和配置Bean。

  3. @Autowired及其衍生注解用于進(jìn)行Bean的自動(dòng)注入,可以與@Component和@Configuration注解一起使用。

  4. @Value及其衍生注解用于進(jìn)行配置屬性的注入和讀取。

  5.  @Transactional及其衍生注解用于聲明事務(wù)和監(jiān)聽事務(wù)事件,通常用于@Service和@Repository注解的類。

 總的來說,這些注解是相互關(guān)聯(lián)的,可以結(jié)合使用,達(dá)到更加靈活和高效的開發(fā)效果。 

二、方法注解

1.方法注解的存儲(chǔ)

1.1 @Bean注解的使用

我們先創(chuàng)建一個(gè)用戶類

public class User {

    public int Id;
    private String name;


    @Override
    public String toString() {
        return "User{" +
                "Id=" + Id +
                ", name='" + name + '\'' +
                '}';
    }

    public int getId() {
        return Id;
    }

    public void setId(int id) {
        Id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


與類注解不同,類注解是添加到某個(gè)類上的;而方法注解自然就是添加到某個(gè)方法上的

之后再創(chuàng)建一個(gè)方法類,我們要注意在定義方法Bean的時(shí)候也要定義五大類注解,因?yàn)锧Bean要配合類注解才能將對(duì)象正常的存儲(chǔ)到Spring容器中才能獲取到

@Component
public class Users {

    @Bean()
    public User getUser(){
        User user = new User();
        user.setId(66);
        user.setName("竹筒子");
        return user;
    }
}


public class test {
    public static void main(String[] args) {
        ApplicationContext context = new
                ClassPathXmlApplicationContext("spring-config.xml");
        User user = (User) context.getBean("getUser");
        System.out.println(user.toString());
    }
}

 Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

1.2 @Bean方法的重命名 

可以通過設(shè)置 name 屬性給 Bean 對(duì)象進(jìn)?重命名操作,如下圖所示:

Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

Bean命名規(guī)則,當(dāng)沒有設(shè)置name屬性時(shí),那么bean默認(rèn)的名稱就是方法名,當(dāng)設(shè)置了name屬性后,只能通過重命名的name屬性對(duì)應(yīng)的值獲取,也就是說重命名后,再使用方法名就獲取不到Bean對(duì)象了. 此外要注意Bean name是區(qū)分大小寫的

2.方法注解的獲取

在Spring中獲取Bean對(duì)象也叫做對(duì)象裝配或者對(duì)象注入

從Spring中獲取Bean對(duì)象的實(shí)現(xiàn)方法有以下三種:

屬性注入,Setter方法注入,以及構(gòu)造方法注入

2.1 屬性注入

屬性注?是使? @Autowired 實(shí)現(xiàn)的,將 Service 類注?到 Controller 類中。
Service 類的實(shí)現(xiàn)代碼如下:

@Controller
public class UserController {

    @Autowired
    private UserService userService;
    public User getUser(){
        return userService.getUser();
    }
}


public class Test {

    public static void main(String[] args) {
        ApplicationContext context = new
                ClassPathXmlApplicationContext("spring-config.xml");
        UserController userController=
                context.getBean("userController", UserController.class);
        userController.Hi();
    }
}


Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解

屬性注入的優(yōu)缺點(diǎn):

屬性注入的優(yōu)點(diǎn)在于,足夠的簡(jiǎn)單以及簡(jiǎn)潔

缺點(diǎn)在于只能用于IOC容器,同時(shí)無法注入被final修飾的對(duì)象,而且較容易違背單一性原則

2.2 Setter注入

Setter注入的實(shí)現(xiàn)也需要依賴@Autowired進(jìn)行實(shí)現(xiàn),不過其主要針對(duì)setter方法進(jìn)行

@Controller
public class UserController {


    private UserService userService;
    
    @Autowired
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public User getUser(){
        return userService.getUser();
    }
}


Setter注入的優(yōu)缺點(diǎn):

Setter注入的優(yōu)點(diǎn)在于,其較不容易違背單一性原則

缺點(diǎn)在于,不如屬性注入來的簡(jiǎn)介,同時(shí)無法注入被final修飾的對(duì)象

2.3 構(gòu)造方法注入

與前面類似,構(gòu)造方法注入從名字上看,其實(shí)就是在構(gòu)造器上添加@Autowired注解

 @Controller
public class StuController {
    private Stu stu;
 
    @Autowired
    public StuController(Stu stu) {
        this.stu = stu;
    }
 
    public void sayHi(){
        System.out.println(stu);
    }
}


由于構(gòu)造器注入是比較后面出的,其實(shí)它也有一定的智能性:當(dāng)我們只存在一個(gè)構(gòu)造器的時(shí)候,我們可以選擇不添加@Autowired,但是當(dāng)有多個(gè)構(gòu)造器的時(shí)候我們必須手動(dòng)添加@Autowired來指定構(gòu)造器來進(jìn)行注入 

構(gòu)造方法注入優(yōu)缺點(diǎn):

優(yōu)點(diǎn):構(gòu)造器是Spring推薦的注入方式,同時(shí)構(gòu)造器注入的通用性較強(qiáng),能夠注入被final修飾的對(duì)象

缺點(diǎn)在于不如屬性注入來的簡(jiǎn)介及方便

三、總結(jié) 

1.三種注?優(yōu)缺點(diǎn)分析 

  • 屬性注?的優(yōu)點(diǎn)是簡(jiǎn)潔,使??便;缺點(diǎn)是只能?于 IoC 容器,如果是? IoC 容器不可?,并且只有在使?的時(shí)候才會(huì)出現(xiàn) NPE(空指針異常)

  • Setter ?式是 Spring 前期版本推薦的注??式,但通?性不如構(gòu)造?法,所有 Spring 現(xiàn)版本已經(jīng)推薦使?構(gòu)造?法注?的?式來進(jìn)?類注?了

  • 構(gòu)造?法注?是 Spring 推薦的注??式,它的缺點(diǎn)是如果有多個(gè)注?會(huì)顯得?較臃腫,但出現(xiàn)這種情況你應(yīng)該考慮?下當(dāng)前類是否符合程序的單?職責(zé)的設(shè)計(jì)模式了,它的優(yōu)點(diǎn)是通?性,官方推薦,在使?之前?定能把保證注?的類不為空

2.Resource和@Autowired的區(qū)別

當(dāng)我們?cè)谶M(jìn)行類注入的時(shí)候,除了使用@Autowired的時(shí)候,我們也可以使用@Resource進(jìn)行注入

@Resource的用法與@Autowired相同

  1.  @Autowired來自Spring,而@Resource來自JDK的注解

  2. @Resource支持更多的參數(shù)設(shè)置,可以添加name設(shè)置來根據(jù)名稱獲取Bean

  3. @Resource不能用于構(gòu)造函數(shù)注入

 Spring Bean 注解,Spring 注解存取 Bean,Spring 類注解,Spring 方法注解文章來源地址http://www.zghlxwxcb.cn/news/detail-693001.html

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

本文來自互聯(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)文章

  • 【Spring】-Spring中Bean對(duì)象的存取

    【Spring】-Spring中Bean對(duì)象的存取

    作者 :學(xué)Java的冬瓜 博客主頁 :?冬瓜的主頁?? 專欄 :【Framework】 主要內(nèi)容 :往spring中存儲(chǔ)Bean對(duì)象的三大方式:XML方式(Bean標(biāo)簽);五大類注解;方法注解。從spring中取對(duì)象的兩種方式:基本方法、注解方法(屬性注入、set注入、構(gòu)造方法注入)。 在Spring中,Bean的裝配方式

    2024年02月12日
    瀏覽(22)
  • 【Spring框架全系列】方法注解@Bean的使用

    【Spring框架全系列】方法注解@Bean的使用

    ????哈嘍,大家好,我是小浪。上篇博客我們介紹了五大類注解的使用方法,以及如何解決Spring使用五大類注解生成bean-Name的問題;那么,談到如何更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象,這里我們還需要介紹另外一個(gè)\\\"方法注解@Bean\\\"的使用,快來一起學(xué)習(xí)叭!???? ??目錄 一、如何使

    2024年02月04日
    瀏覽(23)
  • Spring 用注解更簡(jiǎn)單存取對(duì)象

    Spring 用注解更簡(jiǎn)單存取對(duì)象

    ? 上一篇文章是最原始的創(chuàng)建使用,這篇主要是講 Spring 更簡(jiǎn)單的存儲(chǔ)和讀取對(duì)象的核心是使用 注解 ,也是日常生活企業(yè)用的最多的方法 “注解” 所以這篇的內(nèi)容是很重要的 ?。?! 1.1 前置工作 ? 需要再 Spring 的配置文件中設(shè)置組件 Component 的根路徑 這是很重要的一步,在

    2024年02月13日
    瀏覽(23)
  • 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 來存入Bean對(duì)象到Spring當(dāng)中的,使用那個(gè)類對(duì)象就要存入那個(gè),一個(gè)兩個(gè)類對(duì)象還好,如果需要的對(duì)象多了,就會(huì)非常麻煩。現(xiàn)在,隨著 Spring 發(fā)展不用

    2024年02月11日
    瀏覽(23)
  • 【Spring】基于注解方式存取JavaBean:Spring有幾種注入方式?有什么區(qū)別?

    【Spring】基于注解方式存取JavaBean:Spring有幾種注入方式?有什么區(qū)別?

    ?Hello,我是小黃。眾所周知,Spring是一個(gè)開源的Java應(yīng)用程序框架,其中包括許多通過注解實(shí)現(xiàn)依賴注入的功能。Spring提供了多種注入方式,可以滿足不同的需求和場(chǎng)景。常見的注入方式包括構(gòu)造函數(shù)注入、Setter方法注入和屬性注入。不同的注入方式有不同的適用場(chǎng)景和優(yōu)缺

    2024年02月11日
    瀏覽(19)
  • spring-注解開發(fā)bean

    spring-注解開發(fā)bean

    使用@Component定義bean 在配置文件中通過組建掃描加載bean 3.也可以通過不要配置文件,定義類,使用@Configuration,來代替配置文件 基于注解定義bean 1.@component,大部分的bean都可以通過這個(gè)來定義 1.1@Controller,控制層 1.2@Service,服務(wù)層 1.3@Repository,數(shù)據(jù)層 2.對(duì)于純注解的開發(fā),還

    2024年02月13日
    瀏覽(25)
  • 11Spring IoC注解式開發(fā)(上)(元注解/聲明Bean的注解/注解的使用/負(fù)責(zé)實(shí)例化Bean的注解)

    11Spring IoC注解式開發(fā)(上)(元注解/聲明Bean的注解/注解的使用/負(fù)責(zé)實(shí)例化Bean的注解)

    注解的存在主要是為了簡(jiǎn)化XML的配置。Spring6倡導(dǎo)全注解開發(fā)。 注解開發(fā)的優(yōu)點(diǎn) :提高開發(fā)效率 注解開發(fā)的缺點(diǎn) :在一定程度上違背了OCP原則,使用注解的開發(fā)的前提是需求比較固定,變動(dòng)較小。 自定義一個(gè)注解: 該注解上面修飾的注解包括:Target注解和Retention注解,這兩個(gè)注

    2024年01月21日
    瀏覽(32)
  • Spring基于注解管理bean及全注解開發(fā)

    Spring基于注解管理bean及全注解開發(fā)

    Spring是一款主流的Java EE 輕量級(jí)開源框架,目的是用于簡(jiǎn)化Java企業(yè)級(jí)引用的開發(fā)難度和開發(fā)周期。從簡(jiǎn)單性、可測(cè)試性和松耦合度的角度而言,任何Java應(yīng)用都可以從Spring中受益。Spring框架提供自己提供功能外,還提供整合其他技術(shù)和框架的能力。 Spring自誕生以來備受青睞,

    2024年02月14日
    瀏覽(64)
  • Spring使用注解管理Bean

    Spring使用注解管理Bean

    引入lib包 Spring對(duì)Bean管理的常用注解 @Component組件(作用在類上) Spring中提供了@Component的三個(gè)衍生注解:(功能在目前為止是一致的) @Controller WEB層 @Service 業(yè)務(wù)層 @Repository 持久層 屬性注入的注解:(使用注解注入的方式,可以不用提供set方法) @Value? 用于注入普通類型 @Autowired? 自動(dòng)裝

    2024年01月17日
    瀏覽(30)
  • Spring使用注解存儲(chǔ)Bean對(duì)象

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

    在前一篇博客中( Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL))介紹的是通過配置文件注冊(cè)對(duì)象從而存儲(chǔ)到 Spring 中,這種方式其實(shí)還是挺繁瑣的。 實(shí)際上,在使用學(xué)習(xí)使用 Spring過程中,當(dāng)我們要實(shí)現(xiàn)一個(gè)功能的時(shí)候,先應(yīng)該考慮的是有沒有相應(yīng)的注解是實(shí)現(xiàn)對(duì)應(yīng)功能的,Spring 中

    2024年02月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包