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

理解SpringIOC和DI第一課(Spring的特點),IOC對應(yīng)五大注解,ApplicationContext vs BeanFactory

這篇具有很好參考價值的文章主要介紹了理解SpringIOC和DI第一課(Spring的特點),IOC對應(yīng)五大注解,ApplicationContext vs BeanFactory。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Spring是一個包含眾多工具等Ioc容器

對象這個詞在Spring范圍內(nèi),稱為bean

Spring兩大核心思想

1.IOC ? ? (IOC是控制反轉(zhuǎn),意思是控制權(quán)反轉(zhuǎn)-控制權(quán)(正常是誰用這個對象,誰去創(chuàng)建,)-控制對象的控制權(quán),反轉(zhuǎn)的意思是創(chuàng)建對象的控制權(quán),交給了Spring)

優(yōu)點:解耦合

高內(nèi)聚:一個模塊內(nèi)部的關(guān)系

低耦合:各個模塊之間前的關(guān)系

2.AOP

list/map裝數(shù)據(jù)的容器

tomcat裝的是web的容器

Spring容器,裝的是對象

引入案列(為什么推薦用Spring)

理解SpringIOC和DI第一課(Spring的特點),IOC對應(yīng)五大注解,ApplicationContext vs BeanFactory,java,開發(fā)語言,spring,面試,后端

上面代碼的改動成本太大,耦合性太高

如果改成代碼這種,傳遞的是對象,就直接給對象

不采用生成對象,而是你給我什么我就用什么這種,也就是你需要往里面(就像是下面這個圖,在main中傳遞對象。)

IOC幫助我們做這個工作。

理解SpringIOC和DI第一課(Spring的特點),IOC對應(yīng)五大注解,ApplicationContext vs BeanFactory,java,開發(fā)語言,spring,面試,后端

Spring可以幫助我們創(chuàng)建對象,可以往里面存,也可以從這個里面取,

我們要做的也就是1.告訴Spring,幫我們創(chuàng)建對象,2.知道如何取出來這些對象

DI是一種實現(xiàn)方式(依賴注入)

@Autowired
    private BookService bookService;

假如說加上,上面的Autowired就相當(dāng)于下面的這個意思

Autowired:告訴Spring,從容器中取出這個對象,賦值給當(dāng)前對象的屬性

 private BookService bookService;
    
    public BookController(){
        bookService=new BookService();
    }
@Component:告訴Spring,幫助我們存儲對象。
@Component
public class BookService {
    @Autowired
     private BookDao bookDao;
//    private BookService bookService;
//
//    public BookController(){
//        bookService=new BookService();
//    }
    public List<BookInfo> getBookList() {

        List<BookInfo> bookInfos = bookDao.mockData();
        for (BookInfo bookInfo : bookInfos) {
            if (bookInfo.getStatus() == 1) {
                bookInfo.setStatusCN("可借閱");
            } else {
                bookInfo.setStatusCN("不可借閱");
            }
        }
        return bookInfos;
    }
}

MVC提供了注解,前面的RequestMapping。

IOC(依賴對象的創(chuàng)建的控制權(quán),存)一種思想,DI(依賴注入)是一種實現(xiàn)方式

DI是把依賴對象取出來,并且賦給該對象屬性(?。?/p>

DI主要通過兩類注解類型可以實現(xiàn)

IOC提供兩類注解

1.類注解:@Controller,@Service,@Respository,@Component,@Configuration

2.方法注解:@Bean

理解SpringIOC和DI第一課(Spring的特點),IOC對應(yīng)五大注解,ApplicationContext vs BeanFactory,java,開發(fā)語言,spring,面試,后端

package com.example.IOCtry;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
//加上Controller才會不報錯,假如不加上Controller就會報錯
//@Controller
public class UserController {

public void prin(){
    System.out.println("春節(jié)快樂");
}
}
package com.example.IOCtry;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class IoCtryApplication {

    public static void main(String[] args) {
        //啟動類是幫助我們啟動spring,這個命令可以返回一個spring
        //context上下文,就是spring一個運(yùn)行環(huán)境
        ApplicationContext context=SpringApplication.run(IoCtryApplication.class, args);
        //從容器中拿對象
        UserController bean=context.getBean(UserController.class);
        //如果去掉Control注解,就會報錯
        bean.prin();
    }

}

會報這個錯誤,意思是說沒喲拿到bean這個對象

理解SpringIOC和DI第一課(Spring的特點),IOC對應(yīng)五大注解,ApplicationContext vs BeanFactory,java,開發(fā)語言,spring,面試,后端

下面這個是getBean的根據(jù)名稱拿一個類(注意:這個的獲取規(guī)范是小駝峰),注意這個返回的是一個Object,所以我們需要對他進(jìn)行類型轉(zhuǎn)換

理解SpringIOC和DI第一課(Spring的特點),IOC對應(yīng)五大注解,ApplicationContext vs BeanFactory,java,開發(fā)語言,spring,面試,后端

第三種:根據(jù)名稱和類名拿

 public static void main(String[] args) {
        //啟動類是幫助我們啟動spring,這個命令可以返回一個spring
        //context上下文,就是spring一個運(yùn)行環(huán)境
        ApplicationContext context=SpringApplication.run(IoCtryApplication.class, args);
        //從容器中拿對象
        UserController bean=context.getBean(UserController.class);
        //如果去掉Control注解,就會報錯
        bean.prin();
        UserService bean2=context.getBean(UserService.class);
        bean2.doService();
        UserService bean3=(UserService) context.getBean("userService");
        bean3.doService();
        //根據(jù)名稱和類型獲取bean
        UserService userService=context.getBean("userService",UserService.class);
        userService.doService();

    }

}

??特殊情況:假如類名前兩位(第一位,第二位字母)都是大寫的情況,bean的名稱是類名理解SpringIOC和DI第一課(Spring的特點),IOC對應(yīng)五大注解,ApplicationContext vs BeanFactory,java,開發(fā)語言,spring,面試,后端

常見面試題ApplicationContext ? vs ? ? ?BeanFactory

獲取bean對象,是父類BeanFactory提供的功能

繼承關(guān)系和功能方面來說:Spring容器有兩個頂級的接口:BeanFactory和ApplicationContext.其中BeanFactory提供基礎(chǔ)的訪問容器能力,而ApplicationContext屬于是BeanFactory的子類,他除了繼承了BeanFactory的所有功能之外,他還擁有獨特的特性,國際化支持(中日韓等語言)資源訪問支持,以及事件傳播等方面的支持

從性能方面來說:ApplicationContext是一次性加載并初始化所有的Bean對象,而BeanFactory是需要哪個就去加載哪個,因此會更加清量(空間與時間)

@Service(服務(wù)存儲)和下面使用方法一致
@Repository(倉庫存儲)和control使用方法一致
@Repository
public class UserRepository {
    public void doRepository() {
        //代碼格式化快捷鍵,crtl+alt+l
            System.out.println("aini");
        }
    }
 UserRepository userRepository=context.getBean(UserRepository.class);
        userRepository.doRepository();
@Component(組件存儲)和下面用法一致
@Configuration(配置存儲)
//        UserRepository userRepository=context.getBean(UserRepository.class);
//        userRepository.doRepository();
//        UserComponent userComponent=context.getBean(UserComponent.class);
//        userComponent.doComponent();
      UserConfig userConfig=context.getBean(UserConfig.class);
      userConfig.doConfig();
    }
package com.example.IOCtry.config;

import org.springframework.context.annotation.Configuration;

@Configuration
public class UserConfig {
    public void doConfig(){
        System.out.println("我也是條狗");
    }
}
為什么要去分層,假如說都用一個注解不行嗎?-這就跟車牌號一樣,方便管理,也節(jié)約號碼

常見面試題二

常用的注解有哪些?分別是什么作用

web url映射:@RequestMapping

參數(shù)接口和接口響應(yīng):@RequestParam,@RequestBody,@ResponseBody

Bean的存儲:@Controller,@Service,@Repository,@Component,@Configuration,@Bean

Bean的獲取:@Autowired,@Qualifier,@Resource文章來源地址http://www.zghlxwxcb.cn/news/detail-767293.html

到了這里,關(guān)于理解SpringIOC和DI第一課(Spring的特點),IOC對應(yīng)五大注解,ApplicationContext vs BeanFactory的文章就介紹完了。如果您還想了解更多內(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ù)器費(fèi)用

相關(guān)文章

  • 【學(xué)習(xí)】Spring IoC&DI

    【學(xué)習(xí)】Spring IoC&DI

    ???個人主頁:Dikz12 ??格言:吾愚多不敏,而愿加學(xué) 歡迎大家??點贊?評論?收藏 目錄 Spring 是什么? 什么是 IoC容器? 傳統(tǒng)開發(fā)模式? loC開發(fā)模式 IoC的優(yōu)勢? IoC 的使用 Bean的存儲? ?方法注解 ?DI ?屬性注入 ?構(gòu)造?法注? ?Setter 注? @Autowired存在的問題 ?解決方案:

    2024年04月15日
    瀏覽(24)
  • Spring IoC&DI(2)

    Spring IoC&DI(2)

    通過上面的案例, 我們已經(jīng)知道了IoC和DI的基本操作, 接下來我們來系統(tǒng)地學(xué)習(xí)Spring IoC和DI的操作. 前面我們提到的IoC控制反轉(zhuǎn), 就是將對象的控制權(quán)交給Spring的IoC容器, 由IoC容器創(chuàng)建及管理對象.? ( 也就是Bean的存儲 ). 我們之前只講到了@Component注解來使得對象交給IoC容器管理

    2024年04月10日
    瀏覽(21)
  • 快速理解Laravel容器(IOC、DI、Provider、Contract)

    快速理解Laravel容器(IOC、DI、Provider、Contract)

    分享一些個人見解。 Laravel里面的某些概念,就像魔術(shù)一樣,看起來很厲害,當(dāng)知道魔術(shù)怎么變的,就會認(rèn)為也不過如此。所以不必感覺Laravel里有些概念難以理解。 應(yīng)當(dāng)拋除被框架約束思維的枷鎖,用PHP設(shè)計的角度去思考,關(guān)注大概,而不是在在框架層面逐行磨嘰。畢竟源碼

    2024年04月22日
    瀏覽(22)
  • 什么是IoC?什么是Spring IoC?什么是DI?

    首先說明 IoC 是一種思想,IoC的全稱是Inversion of Control,翻譯成中文叫做 “控制反轉(zhuǎn)” 用人話來說,IoC的思想就是將一個對象對另一個對象的控制權(quán)交出去(不必關(guān)心交給誰),從而讓對象之間的依賴關(guān)系降低,降低代碼之間耦合程度。 我們可以寫一個簡單的代碼來舉個例子

    2024年02月14日
    瀏覽(22)
  • 【Spring篇】IOC/DI注解開發(fā)

    【Spring篇】IOC/DI注解開發(fā)

    ??系列專欄:Spring系列專欄 ??個人主頁:個人主頁 目錄 一、IOC/DI注解開發(fā) 1.注解開發(fā)定義bean? 2.純注解開發(fā)模式 1.思路分析 2.實現(xiàn)步驟 3.注解開發(fā)bean作用范圍與生命周期管理 1.環(huán)境準(zhǔn)備 2.Bean的作用范圍 3.Bean的生命周期 4.注解開發(fā)依賴注入 1.環(huán)境準(zhǔn)備 2.注解實現(xiàn)按照類型注入

    2024年02月03日
    瀏覽(32)
  • Spring IOC DI - 整合MyBatis

    Spring IOC DI - 整合MyBatis

    Spring 框架的優(yōu)勢(對比以前項目的缺點) (1)單純使用Mybatis框架,業(yè)務(wù)層代碼復(fù)雜,需要用大量的代碼自行解析mybatis.xml配置文件,壓力都給到了業(yè)務(wù)層代碼,如下代碼: 學(xué)習(xí)了spring以后,mybaits的使用會更加簡單,會簡化業(yè)務(wù)層處理的代碼。 (2)層與層之間的耦合性太高了

    2024年02月04日
    瀏覽(19)
  • spring--Ioc控制反轉(zhuǎn)/DI依賴注入

    spring--Ioc控制反轉(zhuǎn)/DI依賴注入

    1.概念:在使用對象的時候,由主動的new轉(zhuǎn)換為外部提供對象,將對象創(chuàng)建的控制權(quán)交給外部,即控制反轉(zhuǎn) 2.spring提供了一個容器,稱為IOC容器,用來從當(dāng)ioc中的外部 3.被管理或者被創(chuàng)建的對象在ioc中被叫做bean 使用步驟 1.導(dǎo)入依賴 spring-context 依賴,用到xml文件就需導(dǎo)入 2.創(chuàng)建

    2024年02月12日
    瀏覽(21)
  • Spring框架中IOC和DI詳解

    Spring框架中IOC和DI詳解

    來源黑馬Spring課程,覺得挺好的 1、為什么要學(xué)習(xí)spring? 如果讓本人用一句話去回答這個問題,那么我只能說:在J2EE的學(xué)習(xí)之路上,spring給我?guī)砹碎_發(fā)的春天,讓我們從JSP、sevlet的高耦合的開發(fā)中徹底的解救出來。 spring是目前最主流的框架 spring是學(xué)習(xí)后面課程(比如:

    2023年04月15日
    瀏覽(23)
  • 一文吃透 Spring 中的IOC和DI

    一文吃透 Spring 中的IOC和DI

    ?作者簡介:2022年 博客新星 第八 。熱愛國學(xué)的Java后端開發(fā)者,修心和技術(shù)同步精進(jìn)。 ??個人主頁:Java Fans的博客 ??個人信條:不遷怒,不貳過。小知識,大智慧。 ??當(dāng)前專欄:SSM 框架從入門到精通 ?特色專欄:國學(xué)周更-心性養(yǎng)成之路 ??本文內(nèi)容:一文吃透 Spring 中

    2024年01月25日
    瀏覽(25)
  • Spring框架IOC容器和DI依賴注入

    IOC(Invertion Of Control):控制反轉(zhuǎn),使用對象時,由使用new創(chuàng)建對象轉(zhuǎn)變?yōu)橛赏獠刻峁ο?此過程中對象的創(chuàng)建控制權(quán)由程序轉(zhuǎn)移到外部的思想稱之為控制反轉(zhuǎn). DI(Dependency Injection):依賴注入,在容器中建立bean與bean之間的關(guān)系的過程,稱之為依賴注入 pom.xml依賴引入 BookDao BookDaoImpl Book

    2023年04月09日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包