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

更簡單的存取Bean的方式(一)-五大類注解

這篇具有很好參考價值的文章主要介紹了更簡單的存取Bean的方式(一)-五大類注解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?更簡單的存取Bean的方式(一)-五大類注解

目錄

使用類注解

前置工作?

Bean命名規(guī)則

?五大類的實現(xiàn)

JavaEE標(biāo)準(zhǔn)分層


之前我們存儲Bean時,是在spring-config.xml文件中添加bean注冊內(nèi)容來實現(xiàn)的

更簡單的存取Bean的方式(一)-五大類注解

通過"注解"我們可以替代這一項工作

更加簡單的存儲方式:

使用類注解

五大類注解:

@Controller(控制器):用來控制前端提交的請求,驗證用戶請求的數(shù)據(jù)的正確性(安保系統(tǒng))

@Service(服務(wù)):編排和調(diào)度具體的執(zhí)行方法

@Repository:持久層,和數(shù)據(jù)庫交互=DAO(Data Access Object)數(shù)據(jù)訪問層?

@Component:組件,存放工具類

@Configuration:配置項,項目中的配置

前置工作?

創(chuàng)建好Spring項目后,進(jìn)行前置工作:配置掃描路徑

要將對象存儲到Spring中,需要配置一下存儲對象的掃描路徑, 只有配置的包下的所有類,添加了注解才會正確的被識別并保存到Spring

<?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="com.aaa.service"></content:component-scan>
</beans>

?創(chuàng)建.xml配置文件,將上述代碼粘貼到這里更簡單的存取Bean的方式(一)-五大類注解

?更簡單的存取Bean的方式(一)-五大類注解

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

只有這個包下的類,才會掃描是否有五大類注解的.如果這個類沒加注解,也不會被加入Spring

但是,如果加了五大類注解,卻沒在這個包下的類,也不會被存儲到Spring中

Bean命名規(guī)則

新建類,然后使用注解添加類到Spring中

package com.java.demo;

import org.springframework.stereotype.Controller;

@Controller//將當(dāng)前類存儲到Spring中
public class StudentController {
    public void say(){
        System.out.println("student-hello");
    }

}
import com.java.demo.StudentController;
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");
        StudentController studentController =
                context.getBean("StudentController",StudentController.class);
        studentController.say();
    }
}

?我們使用上文所說,第三種類型+名稱的方式獲取Bean

名稱先用類名試一試,報錯了

更簡單的存取Bean的方式(一)-五大類注解

?使用原類名首字母小寫的形式試試,成功了

更簡單的存取Bean的方式(一)-五大類注解

?那么名稱是需要使用原類名首字母小寫的形式,這是個spring的約定

那如果是這種形式的類名呢?

package com.java.demo;

public class SController {
    public void say(){
        System.out.println("SController-hello");
    }
}

更簡單的存取Bean的方式(一)-五大類注解

通過原類名首字母小寫的形式,獲取不到bean

更簡單的存取Bean的方式(一)-五大類注解

規(guī)則:

如果類名是第一個字母大寫,第二個字母小寫,就可以原類名首字母小寫形式去訪問

如果類名是第一個字母大寫,第二個字母也是大寫,就只能用原類名形式訪問

我們從源碼角度分析,為什么是這樣的規(guī)則?

更簡單的存取Bean的方式(一)-五大類注解?更簡單的存取Bean的方式(一)-五大類注解

更簡單的存取Bean的方式(一)-五大類注解

更簡單的存取Bean的方式(一)-五大類注解

更簡單的存取Bean的方式(一)-五大類注解

?看這段代碼更簡單的存取Bean的方式(一)-五大類注解

如過name.length()大于1并且下標(biāo)為1的字符是大寫并且第0個字符也為大寫寫,那么就返回name

對應(yīng)的是第二條規(guī)則

否則,將第0個字符轉(zhuǎn)換成小寫并返回

對應(yīng)的是第一條規(guī)則

Bean,命名規(guī)則:默認(rèn)情況下是首字母小寫,如果類名首字母和第二個字母都為大寫,Bean名稱為原類名

我們使用這個方法測試一下不同的名稱

import java.beans.Introspector;

public class BeanNameTest {
    public static void main(String[] args) {
        String name1 = "USer";
        String name2 = "User";
        System.out.println("name1 => "+Introspector.decapitalize(name1));
        System.out.println("name2 => "+Introspector.decapitalize(name2));
    }
}

與我們分析的相同?

?更簡單的存取Bean的方式(一)-五大類注解

?五大類的實現(xiàn)

@Controller實現(xiàn)了對Bean的存取

更簡單的存取Bean的方式(一)-五大類注解

將注解替換為@Service

更簡單的存取Bean的方式(一)-五大類注解

?效果:也能獲取到Bean并使用更簡單的存取Bean的方式(一)-五大類注解

?換成@Repository也能成功

更簡單的存取Bean的方式(一)-五大類注解

換成@Component也能成功?

更簡單的存取Bean的方式(一)-五大類注解

換成@Configuration,也可以

更簡單的存取Bean的方式(一)-五大類注解

?這五大類注解,都都更加簡單的存儲獲取Bean

<bean>標(biāo)簽?zāi)芊窨梢院蚦ontent-scan一起使用呢?新建一個包創(chuàng)建類試試

更簡單的存取Bean的方式(一)-五大類注解

使用bean標(biāo)簽

更簡單的存取Bean的方式(一)-五大類注解?成功執(zhí)行了,說明<bean>標(biāo)簽和?content-scan是可以一起使用的.

更簡單的存取Bean的方式(一)-五大類注解

這種場景是在這個類不合適放在content-scan掃描的包下的,但是有需要這個類,就將它用bean標(biāo)簽配置,相當(dāng)于對content-scan的補(bǔ)充

如果 去掉 bean標(biāo)簽,再加上注解,能獲取到userService嗎?

也就是,如果沒在content-scan掃描路徑下的類,加了五大類注解能不能存取Bean?

看結(jié)果:代碼雖然沒有報錯,但是結(jié)果?是找不到userService這個bean的

更簡單的存取Bean的方式(一)-五大類注解

所以答案是不可以!

如果不再掃描路徑下,就不會被掃描

那要是在掃描路徑下,沒加五大類注解呢??

更簡單的存取Bean的方式(一)-五大類注解

也是不行的,即使在掃描路徑下,沒有五大類注解,也是不能被存儲到Spring中的

還有個結(jié)論:如果在content-scan下的所有子包下的類,只要加了五大類注解,都能被存儲到Spring中

建議:不要有重名的類,導(dǎo)包很可能導(dǎo)錯,如果報錯了,可以加別名來區(qū)分

更簡單的存取Bean的方式(一)-五大類注解

五大類注解既然都能進(jìn)行存儲Bean對象,那么為啥要設(shè)置五個類注解?

先看看每個注解的實現(xiàn)

更簡單的存取Bean的方式(一)-五大類注解

?更簡單的存取Bean的方式(一)-五大類注解

更簡單的存取Bean的方式(一)-五大類注解

更簡單的存取Bean的方式(一)-五大類注解

更簡單的存取Bean的方式(一)-五大類注解

可以看到,這四個注解都是基于Component實現(xiàn)的,都是它的一個子類,是針對于它的功能的擴(kuò)展

回到問題,為什么需要五大類注解呢?

JavaEE標(biāo)準(zhǔn)分層

需要先學(xué)習(xí)JavaEE標(biāo)準(zhǔn)分層

為什么要分層?

高內(nèi)聚:分層的設(shè)計可以簡化系統(tǒng)設(shè)計,讓不同的層專注做某一模塊的事

低耦合:層與層之間通過接口或API來交互,依賴方不用知道被依賴方的細(xì)節(jié)

復(fù)用:分層之后可以做到很高的復(fù)用

擴(kuò)展性:分層架構(gòu)可以讓我們更容易做橫向擴(kuò)展

如果系統(tǒng)沒有分層,當(dāng)業(yè)務(wù)規(guī)模增加或流量增大時我們只能針對整體系統(tǒng)來做擴(kuò)展。分層之后可以很方便的把一些模塊抽離出來,獨立成一個系統(tǒng)

JavaEE標(biāo)準(zhǔn)分層至少三層(后端三層架構(gòu))

1.請求處理層(驗證參數(shù)):業(yè)務(wù)邏輯層

2.業(yè)務(wù)邏輯層(服務(wù)調(diào)度)

3.數(shù)據(jù)持久層(直接操作數(shù)據(jù)庫)DAO層

這個分層是我們做項目的基礎(chǔ)?

這是阿里的分層標(biāo)準(zhǔn)

更簡單的存取Bean的方式(一)-五大類注解

細(xì)化了原來的三層架構(gòu),添加了Manager 通用業(yè)務(wù)處理層

mannger層作用

一、可以將原先 Service 層的一些通用能力下沉到這一層,比如與緩存和存儲交互策略,中間件的接入;二、也可以在這一層封裝對第三方接口的調(diào)用,比如調(diào)用支付服務(wù),調(diào)用審核服務(wù)等RPC接口。

優(yōu)點:相比于三層方式,添加了通用處理層對接外部平臺。 上下游對接劃分的比較清晰

缺點:核心業(yè)務(wù)邏輯層沒有劃分

適應(yīng)場景:業(yè)務(wù)邏輯不復(fù)雜的常用業(yè)務(wù)

回到問題,為什么要設(shè)置五大類?注解?

設(shè)置五大類注解的作用就很明了了,為了方便程序員使用,看到某個注解時,就知道是什么層面的代碼,這些注解底層都是Component,功能都是相同的,目的就是為了讓程序員看到注解就能知道當(dāng)前類的作用!

方法注解也可以存儲bean:@Bean

下文再介紹文章來源地址http://www.zghlxwxcb.cn/news/detail-424546.html

到了這里,關(guān)于更簡單的存取Bean的方式(一)-五大類注解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Spring種存取Bean的5種注解

    Spring種存取Bean的5種注解

    先給大家看看我的命名規(guī)范 在spring-config.xml中添加一個bean 把對象注冊給spring。 這種方法在有多個對象的時候 也得一行一行的存進(jìn)去。 2.第二種方法是使用注解 在有很多個對象需要存儲的時候就不用一行一行注冊了,使用前需要先在xml中配置一下掃描路徑,這樣注解才能識

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

    JavaEE——Spring中存取Bean的注解

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

    2024年02月16日
    瀏覽(24)
  • Spring 更簡單的讀取和存儲對象、使用注解存取對象

    Spring 更簡單的讀取和存儲對象、使用注解存取對象

    我們知道物件都會隨著時代的發(fā)展,越變越簡單的。Spring 框架也不意外;我們在之前存儲Bean對象是在配置文件中添加 bean/bean 來存入Bean對象到Spring當(dāng)中的,使用那個類對象就要存入那個,一個兩個類對象還好,如果需要的對象多了,就會非常麻煩?,F(xiàn)在,隨著 Spring 發(fā)展不用

    2024年02月11日
    瀏覽(23)
  • Spring 用注解更簡單存取對象

    Spring 用注解更簡單存取對象

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

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

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

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

    2024年02月11日
    瀏覽(19)
  • hibernate vilidator主要使用注解的方式對bean進(jìn)行校驗

    然后在controller中可以這樣調(diào)用,加上@Validated注解即可。 如果校驗失敗,默認(rèn)會返回Spring boot 框架的出錯信息。是一個json串,里面有詳細(xì)的出錯描述。 二 使用gruops 屬性來實現(xiàn)區(qū)別不同的校驗需求 在上面的例子中,如果Student bean想要用于兩個不同的請求中,每個請求有不同

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

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

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

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

    【Spring】更簡單的讀取和存儲對象,五大類注解

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

    2024年02月15日
    瀏覽(20)
  • spring注解驅(qū)動開發(fā)(BEAN注冊方式與生命周期)

    spring注解驅(qū)動開發(fā)(BEAN注冊方式與生命周期)

    目錄 容器中注冊BEAN的方式 BEAN生命周期 包掃描+組件標(biāo)注注解 @ComponentScan(basePackages = {\\\"com.an.spring.condition\\\"}) @Service @Component @Controller @Repository @BEan方式【導(dǎo)入第三方包里面的組件】 @Import快速給容器中導(dǎo)入一個組件。 1)、@IMport(要導(dǎo)入到容器中的組件),容器就會注入這個組

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

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

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

    2024年02月15日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包