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

【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象

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

??序言

在博主前面所寫的《【JavaEE進(jìn)階】 Spring 的創(chuàng)建和使?》中我們已經(jīng)可以實(shí)現(xiàn)基本的 Spring 讀取和存儲(chǔ)對(duì)象的操作了,但在操作的過程中我們發(fā)現(xiàn)讀取和存儲(chǔ)對(duì)象并沒有想象中的那么“簡單”,所以接下來我們要學(xué)習(xí)更加簡單的操作 Bean 對(duì)象的?法。

在 Spring 中想要更簡單的存儲(chǔ)和讀取對(duì)象的核?是使?注解

之前我們存儲(chǔ) Bean 時(shí),需要在 spring-config 中添加?? bean 注冊(cè)內(nèi)容才?,如下圖所示:
【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象,JavaEE進(jìn)階,java-ee,spring,java,注解

?現(xiàn)在我們只需要?個(gè)注解就可以替代之前要寫??配置的尷尬了,不過在開始存儲(chǔ)對(duì)象之前,我們先要來點(diǎn)準(zhǔn)備?作

??前置?作:配置掃描路徑

注意:

  • 想要將對(duì)象成功的存儲(chǔ)到 Spring 中,我們需要配置?下存儲(chǔ)對(duì)象的掃描包路徑,只有被配置的包下的所有類,添加了注解才能被正確的識(shí)別并保存到Spring 中

在 spring-config.xml 添加如下配置

<?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="org.example"></content:component-scan>
</beans>

其中標(biāo)紅的??為注冊(cè)掃描的包,如下圖所示

【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象,JavaEE進(jìn)階,java-ee,spring,java,注解
注意

  • 如果不是在配置的掃描包下的類對(duì)象,即使添加了注解,也是不能被存儲(chǔ)到 Spring 中的

??添加注解存儲(chǔ) Bean 對(duì)象

想要將對(duì)象存儲(chǔ)在 Spring 中,有兩種注解類型可以實(shí)現(xiàn):

  1. 類注解:@Controller、@Service、@Repository、@Component、@Configuration。

  2. ?法注解:@Bean。

??類注解

由于這五種類注解的使用方式基本相同,所以博主在這里只演示一種即可

@Controller // 將對(duì)象存儲(chǔ)到 Spring 中
public class UserController {
	public void sayHi(String name) {
		System.out.println("Hi," + name);
	}
}

我們只需要在存儲(chǔ)的對(duì)象上面添加相應(yīng)的注解就好,不同的注解有著不同的含義,不過基本使用相同,后面會(huì)進(jìn)行詳細(xì)介紹

使用注意事項(xiàng):

  • 由于這是類存儲(chǔ),并不能存儲(chǔ)一個(gè)類的多個(gè)對(duì)象

那么如何進(jìn)行獲取呢?

后面會(huì)講更加簡單的獲取,這里我們還是使用《【JavaEE進(jìn)階】 Spring 的創(chuàng)建和使?》中所講的獲取方式

public class Application {
	public static void main(String[] args) {
		// 1.得到 spring 上下?
		ApplicationContext context =new ClassPathXmlApplicationContext("spring-config.xml");
		// 2.得到 bean
		UserController userController = context.getBean("userController",UserController.class);
		// 3.調(diào)? bean ?法
		userController.sayHi("遇事問春風(fēng)乄");
	}
}

讀取時(shí)的注意事項(xiàng):

  • 由于時(shí)類注解,所以我們?cè)讷@取對(duì)象時(shí),我們所填的 id 處的參數(shù)有如下約定
    • 當(dāng)首字母和第二字母沒有全部大寫時(shí)采用:類名首字母小寫作為id
    • 當(dāng)首字母和第二字母全部大寫時(shí)采用:類名首字母和第二個(gè)字母全部小寫

??為什么要這么多類注解

既然功能是?樣的,為什么需要這么多的類注解呢?

這和為什么每個(gè)省/市都有??的?牌號(hào)是?樣的??如陜?的?牌號(hào)就是:陜X:XXXXXX,北京的?牌號(hào):京X:XXXXXX,?樣。甚??個(gè)省不同的縣區(qū)也是不同的,?如?安就是,陜A:XXXXX,咸陽:陜B:XXXXXX,寶雞,陜C:XXXXXX,?樣。這樣做的好處除了可以節(jié)約號(hào)碼之外,更重要的作?是可以直觀的標(biāo)識(shí)?輛?的歸屬地。

那么為什么需要怎么多的類注解也是相同的原因,就是讓程序員看到類注解之后,就能直接了解當(dāng)前類的?途,?如:

五大類注解用途(重點(diǎn)) :

  1. @Controller (控制器) :歸屬于業(yè)務(wù)邏輯層,用來控制用戶的行為,它用來檢查用戶參數(shù)的有效性(比如檢查用戶輸入的用戶名是否有效)。

  2. @Service (服務(wù)) :歸屬于服務(wù)層,調(diào)用持久化類實(shí)現(xiàn)相應(yīng)的功能。[不直接和數(shù)據(jù)庫交互的,它類似于控制中心]

  3. @Repository (倉庫) :歸屬于持久層,是直接和數(shù)據(jù)庫進(jìn)行交互的。通常每一個(gè)表都會(huì)對(duì)應(yīng)一個(gè)@Repos i tory。

  4. @Configuration (配置) :歸屬于配置層,是用來配置當(dāng)前項(xiàng)目的一些信息。

  5. @Component (組件) :歸屬于公共工具類,提供某些公共方法。

【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象,JavaEE進(jìn)階,java-ee,spring,java,注解

??注解之間的聯(lián)系

查看 @Controller / @Service / @Repository / @Configuration 等注解的源碼發(fā)現(xiàn):
【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象,JavaEE進(jìn)階,java-ee,spring,java,注解

其實(shí)這些注解??都有?個(gè)注解 @Component,說明它們本身就是屬于 @Component 的“?類”

???法注解 @Bean

類注解是添加到某個(gè)類上的,??法注解是放到某個(gè)?法上的,如以下代碼的實(shí)現(xiàn):

首先我們準(zhǔn)備Student類如下:

public class Student {
    private String name;
    private int old;

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

    public String getName() {
        return name;
    }

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

    public int getOld() {
        return old;
    }

    public void setOld(int old) {
        this.old = old;
    }
}

然后再創(chuàng)建Students類進(jìn)行獲取每一個(gè)Student的對(duì)象

package org.example;

import org.springframework.context.annotation.Bean;

public class Students {
    @Bean
    public Student student() {
        Student stu = new Student();
        stu.setName("遇事問春風(fēng)乄");
        stu.setOld(21);
        return stu;
    }
}

然?,當(dāng)我們寫完以上代碼,嘗試獲取 bean 對(duì)象中的 user1 時(shí)卻發(fā)現(xiàn),根本獲取不到

package org.example;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        Student student = context.getBean("student",Student.class);
        student.toString();
    }
}

以上程序的執(zhí)?結(jié)果如下:

【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象,JavaEE進(jìn)階,java-ee,spring,java,注解

???法注解需要配合類注解使?

在 Spring 框架的設(shè)計(jì)中,?法注解 @Bean 要配合類注解才能將對(duì)象正常的存儲(chǔ)到 Spring 容器中(在哪一類中使用了注解方法,該類就得加上類注解),如下代碼所示:

package org.example;

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;

@Controller
public class Students {
    @Bean
    public Student student() {
        Student stu = new Student();
        stu.setName("遇事問春風(fēng)乄");
        stu.setOld(21);
        return stu;
    }
}

注意事項(xiàng):

  • 添加類注解的類與添加注解方法的返回類一定要不一樣
    【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象,JavaEE進(jìn)階,java-ee,spring,java,注解

否則就會(huì)出現(xiàn)以下問題:

【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象,JavaEE進(jìn)階,java-ee,spring,java,注解
除此之外,在使用時(shí)我們還得知道

我們?cè)龠M(jìn)行獲取的時(shí)候的 id 屬性默認(rèn)為你的方法名

我們也可以對(duì)通過設(shè)置 name 屬性給 Bean 對(duì)象進(jìn)?重命名操作。而且可以設(shè)置多個(gè),且都能獲取到

  • 注意:一但進(jìn)行重命名操作后,就不能使用默認(rèn)方法名了

使用代碼如下:

@Controller
public class Students {
    @Bean(name = {"st1","st2","st3"})
    public Student student() {
        Student stu = new Student();
        stu.setName("遇事問春風(fēng)乄");
        stu.setOld(21);
        return stu;
    }
}
public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        Student student1 = context.getBean("st1",Student.class);
        System.out.println(student1.toString());
        Student student2 = context.getBean("st2",Student.class);
        System.out.println(student2.toString());
        Student student3 = context.getBean("st3",Student.class);
        System.out.println(student3.toString());
    }
}

【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象,JavaEE進(jìn)階,java-ee,spring,java,注解

但我們?cè)俅问褂媚J(rèn)方法名時(shí)就會(huì)報(bào)錯(cuò):

【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象,JavaEE進(jìn)階,java-ee,spring,java,注解

另外我們?cè)跁鴮憰r(shí) name={} 可以省略,如下代碼所示

@Controller
public class Students {
    @Bean({"st1","st2","st3"})
    public Student student() {
        Student stu = new Student();
        stu.setName("遇事問春風(fēng)乄");
        stu.setOld(21);
        return stu;
    }
}

?總結(jié)

關(guān)于《【JavaEE進(jìn)階】 Spring使用注解存儲(chǔ)對(duì)象》就講解到這兒,對(duì)于取對(duì)象,Spring也有更簡單的寫法,后續(xù)博主會(huì)給大家一一介紹!感謝大家的支持,歡迎各位留言交流以及批評(píng)指正,如果文章對(duì)您有幫助或者覺得作者寫的還不錯(cuò)可以點(diǎn)一下關(guān)注,點(diǎn)贊,收藏支持一下!文章來源地址http://www.zghlxwxcb.cn/news/detail-753529.html

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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】使用注解讀取和存儲(chǔ)Bean對(duì)象

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

    ?哈嘍,哈嘍,大家好~ 我是你們的老朋友: 保護(hù)小周? ?? 談起Java 圈子里的框架,最年長最耀眼的莫過于 Spring 框架啦,本期給大家?guī)淼氖牵? 將對(duì)象存儲(chǔ)到 Spring 中、Bean 對(duì)象的命名規(guī)則、從Spring 中獲取bean 對(duì)象、注入的、@Autowired 與?@Resource 的區(qū)別、解決@Bean 方

    2024年02月13日
    瀏覽(23)
  • 【Spring】(三)Spring 使用注解存儲(chǔ)和讀取 Bean對(duì)象

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

    前面的文章詳細(xì)的介紹了 Spring 對(duì)象的創(chuàng)建,以及對(duì) Bean 對(duì)象的存取操作,但是通過配置文件注冊(cè) Bean 對(duì)象以及使用 ApplicationContext 或 BeanFactory 的方式獲取 Bean 對(duì)象的操作就顯得格外的復(fù)雜。因此,本文主要就是詳細(xì)介紹了一種更加簡單的方式來實(shí)現(xiàn)對(duì) Bean 對(duì)象更加簡單的儲(chǔ)

    2024年02月14日
    瀏覽(19)
  • JavaEE進(jìn)階5/25(Spring 注解)

    JavaEE進(jìn)階5/25(Spring 注解)

    1.五大類注解詳解(重點(diǎn) 1.Controller 控制器,用于業(yè)務(wù)邏輯層,來控制用戶的行為。它用來檢查用戶參數(shù)的有效性。 當(dāng)用戶的參數(shù)有效的話會(huì)繼續(xù)分發(fā)到服務(wù)層。controller可以理解為程序的安保系統(tǒng) 2.Service 服務(wù)層。歸屬服務(wù)層,調(diào)用 持久化類 實(shí)現(xiàn)相應(yīng)的功能。(服務(wù)層不直接

    2024年02月07日
    瀏覽(17)
  • 【JavaEE】Spring中注解的方式去獲取Bean對(duì)象

    【JavaEE】Spring中注解的方式去獲取Bean對(duì)象

    【JavaEE】Spring的開發(fā)要點(diǎn)總結(jié)(3) 在前面的代碼里,我們獲取Bean對(duì)象也比較麻煩: 本文章就是為了更方便地去獲取Bean對(duì)象~ 對(duì)象裝配 也叫 對(duì)象注入 那么有沒有對(duì)應(yīng)的注解去實(shí)現(xiàn)這個(gè)功能呢? Spring提供的三種實(shí)現(xiàn)方法: 屬性注入 構(gòu)造方法注入 Setter注入 而這種非明文獲取

    2024年02月15日
    瀏覽(26)
  • JavaEE 突擊 5 - Spring 更簡單的讀取和存儲(chǔ)對(duì)象(2)

    JavaEE 突擊 5 - Spring 更簡單的讀取和存儲(chǔ)對(duì)象(2)

    大家新年快樂 , 祝大家新的一年如圖 這個(gè)專欄給大家介紹一下 Java 家族的核心產(chǎn)品 - SSM 框架 JavaEE 進(jìn)階專欄 Java 語言能走到現(xiàn)在 , 仍然屹立不衰的原因 , 有一部分就是因?yàn)?SSM 框架的存在 接下來 , 博主會(huì)帶大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相關(guān)知識(shí)點(diǎn) 并且?guī)ьI(lǐng)

    2024年02月19日
    瀏覽(22)
  • 3. Spring 更簡單的讀取和存儲(chǔ)對(duì)象(五大類注解 & 方法注解)

    3. Spring 更簡單的讀取和存儲(chǔ)對(duì)象(五大類注解 & 方法注解)

    目錄 1. 存儲(chǔ) Bean 對(duì)象 1.1 配置掃描路徑 1.2 添加注解存儲(chǔ) Bean 對(duì)象 1.2.1 @Controller(控制器存儲(chǔ)) 1.2.2?@Service(服務(wù)存儲(chǔ)) 1.2.3?@Repository(倉庫存儲(chǔ)) 1.2.4?@Component(組件存儲(chǔ)) 1.2.5?@Configuration(配置存儲(chǔ)) 1.3 使用多個(gè)類注解的原因 1.3.1 五大注解之間的關(guān)系 1.3.1 Bean 的命名

    2024年02月15日
    瀏覽(22)
  • 【Spring】更簡單的讀取和存儲(chǔ)對(duì)象,五大類注解

    【Spring】更簡單的讀取和存儲(chǔ)對(duì)象,五大類注解

    經(jīng)過前面的學(xué)習(xí),我們已經(jīng)可以實(shí)現(xiàn)基本的 Spring 讀取和存儲(chǔ)對(duì)象的操作了,但在操作的過程中我們發(fā)現(xiàn)讀取和存儲(chǔ)對(duì)象并沒有想象中的那么 “簡單”,所以接下來我們要學(xué)習(xí)更加簡單的操作 Bean 對(duì)象的方法 在 Spring 中想要 更簡單的存儲(chǔ)和讀取對(duì)象的核心是使用注解 ,也就

    2024年02月15日
    瀏覽(20)
  • 【JavaEE】DI與DL的介紹-Spring項(xiàng)目的創(chuàng)建-Bean對(duì)象的存儲(chǔ)與獲取

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

    Spring的開發(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)目開發(fā)就是 開業(yè) , 放咖啡豆到罐子里 , 后

    2024年02月16日
    瀏覽(22)
  • 【JavaEE進(jìn)階】Spring 創(chuàng)建與使用

    【JavaEE進(jìn)階】Spring 創(chuàng)建與使用

    使用Maven方式來創(chuàng)建一個(gè)Spring項(xiàng)目,創(chuàng)建Spring項(xiàng)目和Servlet類似,總共分為以下3步: 創(chuàng)建一個(gè)普通Maven項(xiàng)目 添加 Spring 框架?持(spring-context、spring-beans) 添加啟動(dòng)類 1.1,創(chuàng)建一個(gè)Maven項(xiàng)目 創(chuàng)建一個(gè)普通的Maven項(xiàng)目注意點(diǎn):項(xiàng)目名稱和項(xiàng)目路徑中不能有任何中文。 當(dāng) Java源代碼

    2024年02月13日
    瀏覽(23)
  • Java進(jìn)階(1)——JVM的內(nèi)存分配 & 反射Class類的類對(duì)象 & 創(chuàng)建對(duì)象的幾種方式 & 類加載(何時(shí)進(jìn)入內(nèi)存JVM)& 注解 & 反射+注解的案例

    Java進(jìn)階(1)——JVM的內(nèi)存分配 & 反射Class類的類對(duì)象 & 創(chuàng)建對(duì)象的幾種方式 & 類加載(何時(shí)進(jìn)入內(nèi)存JVM)& 注解 & 反射+注解的案例

    1.java運(yùn)行時(shí)的內(nèi)存分配,創(chuàng)建對(duì)象時(shí)內(nèi)存分配; 2.類加載的順序,創(chuàng)建一個(gè)唯一的類的類對(duì)象; 3.創(chuàng)建對(duì)象的方式,new,Class.forName,clone; 4.什么時(shí)候加載.class文件進(jìn)入JVM內(nèi)存中,看到new,Class.forName; 5.如何加載?雙親委托(委派)機(jī)制:安全;AppClassLoader; 6.反射實(shí)質(zhì):能

    2024年02月14日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包