最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章帶你了解初始Spring

 更新時間:2021年08月02日 16:18:24   作者:保護(hù)眼睛  
這篇文章主要給大家介紹了一個簡單的Spring容器初始化流程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

為什么要使用Spring

Why Spring?

Spring makes programming Java quicker, easier, and safer for everybody. Spring's focus on speed,

simplicity, and productivity has made it the world's most popular Java framework

Spring概述

Spring是一種輕量級的、開源的框架。

Spring為簡化企業(yè)級開發(fā)而生,使用Spring開發(fā)可以將Bean對象,Dao組件對象,Service組件對象等交給Spring容器來管理,這樣使得很多復(fù)雜的代碼在Spring中開發(fā)卻變得非常的優(yōu)雅和簡潔,有效的降低代碼的耦合度,極大的方便項目的后期維護(hù)、升級和擴(kuò)展。

Spring是一個IOC(DI)和AOP容器框架。

Spring的優(yōu)良特性

非侵入式:基于Spring開發(fā)的應(yīng)用中的對象可以不依賴于Spring的API

控制反轉(zhuǎn):IOC——Inversion of Control,指的是將對象的創(chuàng)建權(quán)交給Spring去創(chuàng)建。使用Spring之前,對象的創(chuàng)建都是由我們自己在代碼中new創(chuàng)建。而使用Spring之后。對象的創(chuàng)建都是由給了Spring框架。

依賴注入:DI——Dependency Injection,是指依賴的對象不需要手動調(diào)用setXX方法去設(shè)置,而是通過配置賦值。

面向切面編程:Aspect Oriented Programming——AOP

容器:Spring是一個容器,因為它包含并且管理應(yīng)用對象的生命周期

組件化:Spring實現(xiàn)了使用簡單的組件配置組合成一個復(fù)雜的應(yīng)用。在 Spring 中可以使用XML和Java注解組合這些對象。

一站式:在IOC和AOP的基礎(chǔ)上可以整合各種企業(yè)應(yīng)用的開源框架和優(yōu)秀的第三方類庫(實際上Spring 自身也提供了表述層的SpringMVC和持久層的Spring JDBC)

IOC
IOC 是一種設(shè)計的思想,使用這種的設(shè)計的思想實現(xiàn)的框架就是IOC容器、通過這個容器可以實現(xiàn)對bean的管理、也就是對對象的生命周期的管理、也可以管理對象之間的依賴關(guān)系。IOC 是Spring用來實現(xiàn)對象的創(chuàng)建的、也就是將對象的創(chuàng)建交給Spring來實現(xiàn)的、降低了類和類之間的耦合度。
IOC 的 思想依賴于IOC容器的來實現(xiàn)的,IOC的底層就是對象工廠。
Spring提供了兩種實現(xiàn)IOC的方法、一種是BeanFactroy來實現(xiàn)的、一種是ApplicationContext來是實現(xiàn)的。
IOC的底層原理:IOC的底層就是使用xml、工廠模式、反射的技術(shù)來實現(xiàn)。

DI
實現(xiàn)了IoC思想的容器就是IoC容器,比如:SpringFremework, Guice(Google開源的輕量級DI框架)

AOP
AOP(Aspect-Oriented Programming,面向切面編程)是對傳統(tǒng)傳統(tǒng) OOP(Object-Oriented Programming,面向?qū)ο缶幊蹋┑难a(bǔ)充,屬于一種橫向擴(kuò)展。其將與核心業(yè)務(wù)無關(guān)的代碼,如日志記錄、性能監(jiān)控、事務(wù)處理等從業(yè)務(wù)邏輯代碼中抽離出來,進(jìn)行橫向排列,從而實現(xiàn)低耦合,提高開發(fā)效率。

Spring容器使用流程

1.啟動容器

加載類路徑下的beans.xml 文件

在這里插入圖片描述

2.完成bean的初始化

通過配置文件完成對bean的初始化

在這里插入圖片描述

掃描路徑下org.example添加四個注解的類

在這里插入圖片描述

3.注冊bean到容器中

在這里插入圖片描述

在這里插入圖片描述

4.裝配bean的屬性

在這里插入圖片描述

bean的注冊

四個注解都可以用來將當(dāng)前的類注入到bean中去、將類交給spring來托管。
@Component是基礎(chǔ)注解,表示一個 JavaBean 可以被注入到 Spring 容器中。
為了更好的表示 Web 服務(wù)中的三層結(jié)構(gòu),所以就額外的引出了另外的三種注解分別用在三層結(jié)構(gòu)中進(jìn)行標(biāo)注:
@Controller 用在表現(xiàn)層,對來自前端的請求進(jìn)行轉(zhuǎn)發(fā)處理與重定向。
@Repository 用在持久層,標(biāo)注 DAO 類,表示這個類可以對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的讀取或者寫入。
@Service 用在業(yè)務(wù)層,用來處理業(yè)務(wù)邏輯。
引入后三個注解之后,就實現(xiàn)了將處理前端請求、處理業(yè)務(wù)邏輯、處理數(shù)據(jù)庫讀寫這三個基本任務(wù)進(jìn)行了解耦,方便程序的編寫和項目維護(hù)。
也可以使用@Bean注解
當(dāng)前類被 Spring 掃描到時,可以在方法上使用 @Bean 注解,通過方法返回類型,也可以定義、注冊Bean對象,默認(rèn)使用方法名作為Bean的名稱。
@Configuration
在類被Spring掃描到時,使用 @Configuration 注解,可以注冊一個配置類到容器中。配置類一般用來
可以使用FactoryBean接口:先定義一個Bean,實現(xiàn)FactoryBean接口,指定泛型為要注冊的類,通過getObject方法的返回

bean屬性注入

可以在屬性上使用 @Autowired 注解
也可以使用setter方法上使用 @Autowired 注解
也能使用構(gòu)造方法注入
使用 @Qualifier(“名稱”) 注解、注入指定的bean

@Controller
public class LoginController {
    //    第一種注解的方式屬性注入
    //     @Autowired
    @Resource
    private LoginService loginService;

    //第二種的注入的方式使用set方法來實現(xiàn)注入
    public void setLoginService(LoginService loginService) {
        this.loginService = loginService;
    }
    //第三中的方法、使用構(gòu)造函數(shù)來實現(xiàn)注入、使用構(gòu)造函數(shù)的方式來實現(xiàn)注入的話、不需要@Autowire注解
    public LoginController(LoginService loginService) {
        this.loginService = loginService;
    }
    public void say() {
        loginService.say();
    }
    @Bean
    public User user1() {
        User user = new User();
        user.setName("ni");
        ;
        user.setPassword("wo");
        return user;
    }
    @Bean
    public User user2() {
        User user = new User();
        user.setName("y");
        user.setPassword("y");
        return user;
    }
}

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • spring和quartz整合,并簡單調(diào)用(實例講解)

    spring和quartz整合,并簡單調(diào)用(實例講解)

    下面小編就為大家?guī)硪黄猻pring和quartz整合,并簡單調(diào)用(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 2021年最新Redis面試題匯總(1)

    2021年最新Redis面試題匯總(1)

    在程序員面試過程中redis相關(guān)的知識是常被問到的話題。這篇文章主要介紹了幾道Redis面試題,整理一下分享給大家,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java接口默認(rèn)方法帶來的問題分析【二義性問題】

    Java接口默認(rèn)方法帶來的問題分析【二義性問題】

    這篇文章主要介紹了Java接口默認(rèn)方法帶來的問題,結(jié)合實例形式分析了java接口帶來的二義性問題,需要的朋友可以參考下
    2019-08-08
  • springboot集成nacos報錯:get data from Nacos error,dataId:null.yaml的原因及解決方法

    springboot集成nacos報錯:get data from Nacos 

    這篇文章給大家介紹了springboot集成nacos報錯:get data from Nacos error,dataId:null.yaml的原因及解決方法,如果又遇到相同問題的朋友可以參考閱讀本文
    2023-10-10
  • 一篇文章教你用Java使用JVM工具檢測問題

    一篇文章教你用Java使用JVM工具檢測問題

    這篇文章主要介紹了深入理解Java使用JVM工具檢測問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • SpringMVC記錄我遇到的坑_AOP注解無效,切面不執(zhí)行的解決

    SpringMVC記錄我遇到的坑_AOP注解無效,切面不執(zhí)行的解決

    這篇文章主要介紹了SpringMVC記錄我遇到的坑_AOP注解無效,切面不執(zhí)行的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java Websocket Canvas實現(xiàn)井字棋網(wǎng)絡(luò)游戲

    Java Websocket Canvas實現(xiàn)井字棋網(wǎng)絡(luò)游戲

    這篇文章主要介紹了Java Websocket Canvas實現(xiàn)井字棋網(wǎng)絡(luò)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java實現(xiàn)UTF-8編碼與解碼方式

    Java實現(xiàn)UTF-8編碼與解碼方式

    這篇文章主要介紹了Java實現(xiàn)UTF-8編碼與解碼方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • SpringBoot+MyBatis-Plus+Velocity實現(xiàn)代碼自動生成

    SpringBoot+MyBatis-Plus+Velocity實現(xiàn)代碼自動生成

    本文主要介紹了使用SpringBoot、MyBatis-Plus和Velocity模板引擎實現(xiàn)代碼自動生成器,該生成器能夠根據(jù)數(shù)據(jù)庫表結(jié)構(gòu)自動生成增刪改查操作的代碼,感興趣的可以了解一下
    2025-03-03
  • Mybatis中xml的動態(tài)sql實現(xiàn)示例

    Mybatis中xml的動態(tài)sql實現(xiàn)示例

    本文主要介紹了Mybatis中xml的動態(tài)sql實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論

三明市| 集贤县| 东平县| 龙江县| 简阳市| 镇原县| 丰城市| 裕民县| 石城县| 永顺县| 麻城市| 嘉禾县| 榆中县| 乌拉特后旗| 楚雄市| 军事| 宜丰县| 双牌县| 囊谦县| 屯留县| 新乡县| 上高县| 嫩江县| 二连浩特市| 双柏县| 富源县| 越西县| 武胜县| 永顺县| 元阳县| 正安县| 西充县| 钟山县| 松滋市| 武城县| 林口县| 顺平县| 镇原县| 建阳市| 上饶县| 东海县|