国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - @Configuration與@Component作為配置類的區(qū)別詳解

@Configuration與@Component作為配置類的區(qū)別詳解

2019-06-27 17:06弟中弟中弟 Java教程

這篇文章主要介紹了@Configuration與@Component作為配置類的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

@Configuration注解的類:

/**
 * @Description 測試用的配置類
 * @Author 弟中弟
 * @CreateTime 2019/6/18 14:35
 */
@Configuration
public class MyBeanConfig {
 @Bean
 public Country country(){
  return new Country();
 }
 @Bean
 public UserInfo userInfo(){
  return new UserInfo(country());
 }
}

@Component注解的類:

/**
 * @Description 測試用的配置類
 * @Author 弟中弟
 * @CreateTime 2019/6/18 14:36
 */
@Component
public class MyBeanConfig {
 @Bean
 public Country country(){
  return new Country();
 }
 @Bean
 public UserInfo userInfo(){
  return new UserInfo(country());
 }
}

測試:

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoTest {

  @Autowired
  private Country country;

  @Autowired
  private UserInfo userInfo;

  @Test
  public void myTest() {
    boolean result = userInfo.getCountry() == country;
    System.out.println(result ? "同一個country" : "不同的country");
  }

}

如果是@Configuration打印出來的則是同一個country,@Component則是不同的country,這是為什么呢?

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
  @AliasFor(
    annotation = Component.class
  )
  String value() default "";
}

你點開@Configuration會發(fā)現(xiàn)其實他也是被@Component修飾的,因此context:component-scan/ 或者 @ComponentScan都能處理@Configuration注解的類。

@Configuration標(biāo)記的類必須符合下面的要求:

配置類必須以類的形式提供(不能是工廠方法返回的實例),允許通過生成子類在運行時增強(cglib 動態(tài)代理)。

配置類不能是 final 類(沒法動態(tài)代理)。

配置注解通常為了通過 @Bean 注解生成 Spring 容器管理的類,

配置類必須是非本地的(即不能在方法中聲明,不能是 private)。

任何嵌套配置類都必須聲明為static。

@Bean 方法可能不會反過來創(chuàng)建進一步的配置類(也就是返回的 bean 如果帶有

@Configuration,也不會被特殊處理,只會作為普通的 bean)。

但是spring容器在啟動時有個專門處理@Configuration的類,會對@Configuration修飾的類cglib動態(tài)代理進行增強,這也是@Configuration為什么需要符合上面的要求中的部分原因,那具體會增強什么呢?

這里是個人整理的思路 如果有錯請指點

userInfo()中調(diào)用了country(),因為是方法那必然country()生成新的new contry(),所以動態(tài)代理增加就會對其進行判斷如果userInfo中調(diào)用的方法還有@Bean修飾,那就會直接調(diào)用spring容器中的country實例,不再調(diào)用country(),那必然是一個對象了,因為spring容器中的bean默認(rèn)是單例。不理解比如xml配置的bean

<bean id="country" class="com.hhh.demo.Country" scope="singleton"/>

這里scope默認(rèn)是單例。

以上是個人理解,詳情源碼的分析請看http://www.jfrwli.cn/article/4572.html

但是如果我就想用@Component,那沒有@Component的類沒有動態(tài)代理咋辦呢?

/**
 * @Description 測試用的配置類
 * @Author 弟中弟
 * @CreateTime 2019/6/18 14:36
 */
@Component
public class MyBeanConfig {
 @Autowired
 private Country country;
 @Bean
 public Country country(){
  return new Country();
 }
 @Bean
 public UserInfo userInfo(){
  return new UserInfo(country);
 }
}

這樣就保證是同一個Country實例了

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
  • Java教程Java之Springcloud Feign組件詳解

    Java之Springcloud Feign組件詳解

    這篇文章主要介紹了Java之Springcloud Feign組件詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下...

    深情以改10322021-11-12
  • Java教程Java list.remove( )方法注意事項

    Java list.remove( )方法注意事項

    這篇文章主要介紹了Java list.remove( )方法注意事項,非常簡單易懂,需要的朋友可以參考下...

    妖久9552021-05-25
  • Java教程java 中鎖的性能提高辦法

    java 中鎖的性能提高辦法

    這篇文章主要介紹了java 中鎖的性能提高辦法的相關(guān)資料,需要的朋友可以參考下...

    Java之家3092020-08-13
  • Java教程JavaWeb 實現(xiàn)驗證碼功能(demo)

    JavaWeb 實現(xiàn)驗證碼功能(demo)

    在 WEB-APP 中一般應(yīng)用于:登錄、注冊、買某票、秒殺等場景,大家都接觸過這個驗證碼操作,今天小編通過實例代碼給大家講解javaweb實現(xiàn)驗證碼功能,需要...

    java教程網(wǎng)12832020-08-05
  • Java教程淺談Java(SpringBoot)基于zookeeper的分布式鎖實現(xiàn)

    淺談Java(SpringBoot)基于zookeeper的分布式鎖實現(xiàn)

    這篇文章主要介紹了Java(SpringBoot)基于zookeeper的分布式鎖實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的...

    LJY_SUPER5742021-07-21
  • Java教程JAVA中通過自定義注解進行數(shù)據(jù)驗證的方法

    JAVA中通過自定義注解進行數(shù)據(jù)驗證的方法

    java 自定義注解驗證可自己添加所需要的注解,下面這篇文章主要給大家介紹了關(guān)于JAVA中通過自定義注解進行數(shù)據(jù)驗證的相關(guān)資料,文中通過示例代碼介紹...

    Decouple6362021-05-25
  • Java教程springboot ehcache 配置使用方法代碼詳解

    springboot ehcache 配置使用方法代碼詳解

    EhCache是一個比較成熟的Java緩存框架,Springboot對ehcache的使用非常支持,所以在Springboot中只需做些配置就可使用,且使用方式也簡易,今天給大家分享spri...

    m1719309529412912021-09-16
  • Java教程SpringBoot引入Thymeleaf的實現(xiàn)方法

    SpringBoot引入Thymeleaf的實現(xiàn)方法

    這篇文章主要介紹了SpringBoot引入Thymeleaf的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下...

    Bobby6472021-07-28
主站蜘蛛池模板: 国产一区二区免费视频 | 亚洲电影免费 | 中文字幕在线观看一区二区三区 | 久久露脸国产精品 | 久久久久亚洲精品 | 国产一区二区三区在线 | 欧美一级免费看 | 色www精品视频在线观看 | 免费在线国产 | 日韩欧美在线一区 | 中文在线a在线 | jav成人av免费播放 | 日韩综合视频在线观看 | 精品久久久久久国产 | 午夜精品久久久久久久久 | 国内精品三级 | 国产精品成人在线观看 | 亚洲综合精品 | 久久精品日产第一区二区三区 | 欧美日韩在线免费 | 精品在线一区 | 不卡一二三区 | 精品一区二区电影 | 凹凸日日摸日日碰夜夜爽孕妇 | 久久久久久久久久久高潮 | 国产在线中文字幕 | av在线免费播放 | 欧美精品福利 | 中文字幕第一页在线 | 欧美亚洲日本 | 欧美 日韩 综合 | 午夜精品美女久久久久av福利 | 欧美黄色一级片免费看 | 国产日产久久高清欧美一区 | 蜜桃免费视频 | 日本久久国产 | 一本一道久久久a久久久精品91 | 国产激情一区二区三区 | 自拍亚洲 | 欧美黑人xx| 精品在线一区二区 |