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

Spring-IOC綜述

這篇具有很好參考價值的文章主要介紹了Spring-IOC綜述。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

文章遷移自語雀。

怎么查看spring的文檔

Spring-IOC綜述,Springboot,1024程序員節(jié),spring,java,后端

ioc綜述

說到spring的ioc,其實就是控制反轉,為啥需要控制反轉呢,其實是為了功能的增強,如果不用spring, 我們直接使用工廠方法,靜態(tài)工廠方法, 都是是可以獲取到對象的,但是如果需求變了,我們在類的生成時,添加了很多信息,使用工廠就不方便了,還有事務等需要統一的處理.一個典型的應用就是mybatis的接口,平時我們都是只需要寫mybatis的接口,但是不寫他的實現類,由spring生成一個代理的實現類,來進行方法的調用.對于事務的調用,在service上添加了事務,需要調用dao進行統一的控制.所以需要一個統一的bean對象的管理,就是ioc了,當然了,還可以使用google的juice.

說一點spring3和spring4的區(qū)別,spring3提供接口注入.

ioc注入

現在看spring ioc的文檔, 5.2版本的文檔,現在提供的注入方式有兩種,構造方法和set方法注入.

如果使用xml進行配置,在寫<bean>標簽時,默認是使用的類型注入,就是default-autowired=byType

注解注入

說下我們經常使用的@Autowired注解

默認使用的是根據類型注入,如果類型沒有找到,就根據屬性名在去查找,找不到就報錯了.

通過查看spring的源碼,當把@Autowired寫在屬性上的時候,spring是使用的反射,獲取該屬性的Field,再進行值的設置,完成屬性的注入.

@Resource注解可以指定bean的名字和類型,根據屬性名注入,跟set方法的名字就沒有關系了

自定義bean名字生成

最后說一個自定義bean的名字生成策略

BeanNameGenerator 接口

步驟如下:

1.自定義類實現BeanNameGenerator接口,重寫方法

import org.springframework.beans.factory.config.BeanDefinition;

import org.springframework.beans.factory.support.BeanDefinitionRegistry;

import org.springframework.beans.factory.support.BeanNameGenerator;

/**

* 自定義bean name的生成策略

*/

public class MyBeanNameGenerator implements BeanNameGenerator {

? ?@Override

? ?public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {

? ? ? ?String className = definition.getBeanClassName();

? ? ? ?System.out.println(className);

? ? ? ?int indexOf = className.lastIndexOf(".");

? ? ? ?if (indexOf != -1) {

? ? ? ? ? ?//前面加一個 my,其他的不做處理

? ? ? ? ? ?return "my"+className.substring(indexOf + 1, className.length());

? ? ? ?}

? ? ? ?return null;

? ?}

}

2.通過修改@ComponentScan ?指定類名生成策略.

@ComponentScan(value = "com.onyx",nameGenerator = MyBeanNameGenerator.class)

再次運行spring就可以看到生成的bean 名字了.

測試代碼如下, 就是個main方法:


public static void main(String[] args) {

AnnotationConfigApplicationContext context =

? new AnnotationConfigApplicationContext(AppConfig.class);

String[] names = context.getBeanDefinitionNames();

for (String name : names) {

?System.out.println(name);

}

}

獲取application

如果想要獲取到application對象,需要在類上實現接口implements ApplicationContextAware,

在類中定義變量ApplicationContext applicationContext 進行接收, 賦值.就可以使用了.

Lookup注解

說一個很特殊的應用場景,在一個類的每個方法中,需要使用的類,每次使用的類都要求是不同的對象,每用一次相當于new 一次, 這個時候需要使用到@LookUp("userDao") 注解,使用的方法上加上,每個方法獲取的dao就會一個新的對象,而不是一個單例的dao重用.此注解只能加上方法上.使用方法省略,需要的時候再去具體看吧.

spring bean生命周期回調

InitializingBean初始化接口

DisposableBean銷毀對象的接口

注解:

@PostConstruct

@PreDestroy

一個類實現此接口使用使用到具體的回調方法.也可以使用xml的配置,在<bean>標簽中使用init-method=init 初始化方法

spring還存在@DependsOn 注解, 表明此類的生成需要依賴的其他的一個類的步驟.

spring掃描

@ComponentScan ?中可以配置 filter等過濾信息,只掃描需要的類,加快spring的啟動速度.里面有一套掃描的形式

還有另外一個方法,添加一個依賴.

<dependency>

? ?<groupId>org.springframework</groupId>

? ?<artifactId>spring-context-indexer</artifactId>

? ?<version>5.2.3.RELEASE</version>

? ?<optional>true</optional>

</dependency>

這個依賴會加快spring的啟動速度.

Primary注解

前段時間做項目,我們項目經理用的eclipse,他啟動項目一定要加上@Primary 注解, 否則啟動報錯,我做的這個項目,我就納悶了, 我的一個接口就一個實現類,不可能有重名的,不知道eclipse有什么bug,我用idea啟動完全沒問題.

一個接口,兩個實現類,其他地方根據接口注入了,如果不做修改會報錯,說找到了兩個類.

解決辦法 在一個類上標記@Primary? 或者使用@Qualifier ,名字做區(qū)分.

@Profile

各種環(huán)境中類的實例化,類上添加,

激活@Profile. ?

context.getEnvironment().setActiveProfile("....")

好處就是可以自由的切換類, 配置文件.

spring-jdbc 通用鏈接,自己做測試用.

spring的循環(huán)依賴

修改了application, 之后需要重新reshesh一下.

什么時候用xml

什么時候用注解

什么時候用java config

根據項目來,如果想精通spring,就三者混合這來.

不得不說寫總結性的文章真的好要時間,寫這個文章的時候,程程剛在睡覺,那時候剛過10點,現在都11點了,只希望疫情能夠早點結束,早日能夠看到她,我的心情就像外面的濛濛細雨一樣,外面的天空是灰蒙蒙的,哎.

2020年2月14日11:08:02文章來源地址http://www.zghlxwxcb.cn/news/detail-774481.html

到了這里,關于Spring-IOC綜述的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • 1024程序員節(jié)特輯 | Spring Boot實戰(zhàn) 之 MongoDB分片或復制集操作

    1024程序員節(jié)特輯 | Spring Boot實戰(zhàn) 之 MongoDB分片或復制集操作

    Spring實戰(zhàn)系列文章: Spring實戰(zhàn) | Spring AOP核心秘笈之葵花寶典 Spring實戰(zhàn) | Spring IOC不能說的秘密? 國慶中秋特輯系列文章: 國慶中秋特輯(八)Spring Boot項目如何使用JPA 國慶中秋特輯(七)Java軟件工程師常見20道編程面試題 國慶中秋特輯(六)大學生常見30道寶藏編程面試題

    2024年02月08日
    瀏覽(44)
  • 1024程序員節(jié)特輯 | 解密Spring Cloud Hystrix熔斷提高系統的可用性和容錯能力

    1024程序員節(jié)特輯 | 解密Spring Cloud Hystrix熔斷提高系統的可用性和容錯能力

    專欄集錦,大佬們可以收藏以備不時之需 Spring Cloud實戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9270827.html Python 實戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9271194.html Logback 詳解專欄:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow專欄:https://blog.csdn.net/superdangbo/category_869

    2024年02月08日
    瀏覽(28)
  • 1024 程序員節(jié),圓一個小小的夢

    Hope is a good thing, maybe the best of things, and no good thing ever dies. 希望是件美麗的東西,也許是最好的東西,而美好的東西是永遠不會消逝的。 大家好,我是勇哥 。 1024 , 程序員節(jié),圓了我一個小小的夢。 花了半年時間,我寫了一本電子書 ,書名是:《 RocketMQ4.X設計精要 》,我想

    2024年02月08日
    瀏覽(30)
  • 程序員幫助程序員!用1024拼出更美好的云計算未來

    程序員幫助程序員!用1024拼出更美好的云計算未來

    中國的云計算市場是全球增長最快的。據預測,中國公共云服務市場的全球份額將從 2020 年的 6.5% 增加到 2024 年的 10.5% 以上。 伴隨行業(yè)的迅速發(fā)展,催生了云計算相關人才需求的井噴增長,供需矛盾凸顯。據德意志銀行分析報告,越來越多IT企業(yè)關閉了線下IDC,開始把業(yè)務遷

    2024年02月16日
    瀏覽(29)
  • 解決github ping不通的問題(1024程序員節(jié)快樂!

    1024程序員節(jié)快樂?。?隨便粘貼一個文檔,參加活動 域名解析(域名-IP):https://www.ipaddress.com/ Ubuntu平臺 github經常ping不通或者訪問緩慢,方法是更改hosts文件 在hosts里添加github的ip 140.82.114.4 www.github.com 199.232.5.194 github.global.ssl.fastly.net 54.231.114.219 github-cloud.s3.amazonaws.com 可以訪

    2024年01月18日
    瀏覽(35)
  • 好用且免費的CodeWhisperer,給1024程序員節(jié)送禮來了

    好用且免費的CodeWhisperer,給1024程序員節(jié)送禮來了

    ? ? ? 國慶期間沒有膽量去人從眾的景點,關在家里刷手機時意外在亞馬遜的User Group公眾號上發(fā)現了CodeWhisperer這么個好東西(bu yao qian),以后擼代碼也可以提高生產力(fang yang mo yu)了,這還不趕緊上手試一下??垂俜浇榻B說它支持流行的IDE開發(fā)工具,包括VS Code、Intelli

    2024年02月08日
    瀏覽(31)
  • 1024程序員節(jié)帶你玩轉圖片Exif信息獲取之JavaScript

    1024程序員節(jié)帶你玩轉圖片Exif信息獲取之JavaScript

    目錄 一、前言 二、背景 三、Exif.js ? ? ? ? ?1、Exif.js 簡介 2、Exif.js 引入 四、多場景展示數據獲取 1、原始圖片直接獲取 ?2、base64 編碼文件加載 ?3、文件上傳的方式加載 ?五、總結 ? ? ? ?1024是2的十次方,二進制計數的基本計量單位之一。1G=1024M,而1G與1級諧音,也有一

    2024年02月20日
    瀏覽(98)
  • 1024程序員狂歡節(jié) | IT前沿技術、人工智能、數據挖掘、網絡空間安全技術

    1024程序員狂歡節(jié) | IT前沿技術、人工智能、數據挖掘、網絡空間安全技術

    一年一度的1024程序員狂歡節(jié)又到啦!成為更卓越的自己,堅持閱讀和學習,別給自己留遺憾,行動起來吧! 那么,都有哪些好書值得入手呢?小編為大家整理了前沿技術、人工智能、集成電路科學與芯片技術、新一代信息與通信技術、網絡空間安全技術,四大熱點領域近期

    2024年02月06日
    瀏覽(32)
  • 1024程序員節(jié)特輯 | ELK+ 用戶畫像構建個性化推薦引擎,智能實現“千人千面”

    1024程序員節(jié)特輯 | ELK+ 用戶畫像構建個性化推薦引擎,智能實現“千人千面”

    專欄集錦,大佬們可以收藏以備不時之需 Spring Cloud實戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9270827.html Python 實戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9271194.html Logback 詳解專欄:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow專欄:https://blog.csdn.net/superdangbo/category_869

    2024年02月07日
    瀏覽(36)
  • 1024程序員節(jié)?我們整點AI繪圖玩玩吧,一文教你配置stable-diffusion

    1024程序員節(jié)?我們整點AI繪圖玩玩吧,一文教你配置stable-diffusion

    需提前準備:一臺高性能的電腦(尤其是顯存)、python、Git、梯子。 其實Github上有很多關于Stable diffusion的庫,綜合對比之后,我選取的是比較全面的AUTOMATIC1111這個,源碼鏈接:Stable-diffusion(Github) 找到安裝那塊的教程,此教程以windows為例。 ps:如果你電腦上已經有了pyt

    2024年01月16日
    瀏覽(31)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包