欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Bean的定義及三種創(chuàng)建方式

 更新時間:2023年07月04日 11:31:54   作者:熊貓Jay  
本文主要介紹了Spring容器獲取Bean的9種方式小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

定義

Spring bean 對象是構成應用程序的支柱,也是由 Spring IoC 容器管理的。bean 是一個被實例化,組裝,并通過 Spring IoC 容器所管理的對象。這些 bean 是由用容器提供的配置元數據創(chuàng)建的。

創(chuàng)建Bean

基于XML配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
? ? ? ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
? ? ? ?xsi:schemaLocation="http://www.springframework.org/schema/beans
? ? ? ?http://www.springframework.org/schema/beans/spring-beans.xsd">
? ? <bean id="beanDemoJay" class="demo.BeanDemoJay"/>
</beans>

基于注解掃描的配置

從 Spring 2.5 開始就可以使用注解來配置依賴注入,在可以使用基于注解的配置之前,我們將需要在我們的 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:context="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
? ? ? ?http://www.springframework.org/schema/context/spring-context.xsd">
? ? <!-- 開啟基于注解的配置 -->
? ? <context:annotation-config/>
? ? <!-- bean definitions go here -->
</beans>

當開啟后,將可以在代碼上使用注解,這表明 Spring 應該自動連接值到屬性,方法和構造函數。如下是常用的注解:

序號說明
1@Required 注解應用于 bean 屬性的 setter 方法。
2@Autowired 注解可以應用到 bean 屬性的 setter 方法,非 setter 方法,構造函數和屬性。
3@Qualifier通過指定確切的將被連線的 bean,@Autowired 和 @Qualifier 注解可以用來刪除混亂。
4JSR-250 AnnotationsSpring 支持 JSR-250 的基礎的注解,其中包括了 @Resource,@PostConstruct 和 @PreDestroy 注解。

基于Java的配置

基于 Java 的配置,可以使你在不用配置 XML 的情況下編寫大多數的 Spring,主要通過 @Configuration 和 @Bean 等注解。

注解說明
@Component最普通的一個注解,一般用于把普通pojo實例化到spring容器中。@Controller 和 @Service 和@Repository 是它的特殊情況,只是作為一個普通的類,不需要特殊歸類時,比較適合采用@Component注解。
@Controller用于標注控制層,表示向控制層注入服務層的數據
@Service用于標注服務層,來進行業(yè)務的邏輯處理,在服務層注入DAO層數據
@Repository用于標注數據訪問層,也可以說用于標注數據訪問組件,即DAO組件
@Configuration用于定義配置類,可替換xml配置文件,也可以理解為Spring配置文件當中的上下文。

依附于@Configuration的注解

@Bean 創(chuàng)建Deom

@Configuration
public class Demo {
    @Bean
    public Demo demo(){
        return new Demo();
    }
}

@Import 創(chuàng)建Cofing

@Configuration
@Import(Config.class)
public class Demo {
}

@Import.ImportSelector 選擇器,傳入@Import注解所在類Demo上所有的注解信息,返回要導入的類名

@Configuration
@Import(ImportSelector_.class)
public class Demo {   
}
public class ImportSelector_ implements ImportSelector {
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        return new String[]{"com.spring.demo.beanlifecycle.Demo"};
    }
}

@Impport.ImportBeanDefinitionRegistrar Bean定義注冊器,傳入@Import注解所在類Demo上所有的注解信息:

Mybatis的Mapper接口就是用這種方式將Bean定義注冊到Spring上下文的

@Configuration
@Import(ImportBeanDefinitionRegistrar_.class)
public class Demo {
}
public class ImportBeanDefinitionRegistrar_ implements ImportBeanDefinitionRegistrar {
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        BeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Bean.class).setInitMethodName("init").setDestroyMethodName("destroy").getBeanDefinition();
        registry.registerBeanDefinition("bean", beanDefinition);
        System.out.println("registerBeanDefinitions: " + beanDefinition);
    }
}

FactoryBean

當通過“factoryBean”獲取實例時,FactoryBean會調用getObject()方法;

當通過“&factoryBean”獲取實例時,返回FactoryBean的實例;

當通過Demo.class來獲取bean實例時,調用factoryBean的getObjectTyoe()來獲取類型。

@Configuration
public class Demo {
    @Bean
    public FactoryBean_ factoryBean(){
        return new FactoryBean_();
    }
}
public class FactoryBean_ implements FactoryBean {
    @Override
    public Object getObject() throws Exception {
        return new Demo();
    }
    @Override
    public Class<?> getObjectType() {
        return Demo.class;
    }
}

到此這篇關于Spring Bean的定義及三種創(chuàng)建方式的文章就介紹到這了,更多相關Spring Bean定義及創(chuàng)建內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解JavaSE中抽象類與接口的定義及使用

    詳解JavaSE中抽象類與接口的定義及使用

    這篇文章主要為大家詳細介紹了JavaSe的抽象類和接口,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-07-07
  • Java中二叉樹的先序、中序、后序遍歷以及代碼實現

    Java中二叉樹的先序、中序、后序遍歷以及代碼實現

    這篇文章主要介紹了Java中二叉樹的先序、中序、后序遍歷以及代碼實現,一棵二叉樹是結點的一個有限集合,該集合或者為空,或者是由一個根節(jié)點加上兩棵別稱為左子樹和右子樹的二叉樹組成,需要的朋友可以參考下
    2023-11-11
  • Java設計模式之裝飾模式原理與用法實例詳解

    Java設計模式之裝飾模式原理與用法實例詳解

    這篇文章主要介紹了Java設計模式之裝飾模式原理與用法,結合實例形式詳細分析了裝飾模式的概念、原理、定義與使用方法,并總結分析了裝飾模式的優(yōu)缺點,具有一定參考借鑒價值,需要的朋友可以參考下
    2018-04-04
  • Java中處理XML數據的方法

    Java中處理XML數據的方法

    本文介紹了在Java中處理XML數據的幾種常見方法:DOM、SAX和JAXB,每種方法都有其適用的場景和優(yōu)缺點,具體選擇取決于項目的需求和性能考慮,這篇文章主要介紹了Java中處理XML數據的方法,需要的朋友可以參考下
    2024-06-06
  • 分析Java中為什么String不可變

    分析Java中為什么String不可變

    Java中為什么String是不可變性的。今天我們從多角度解析為什么Java把String做成不可變的。
    2021-06-06
  • Springcould多模塊搭建Eureka服務器端口過程詳解

    Springcould多模塊搭建Eureka服務器端口過程詳解

    這篇文章主要介紹了Springcould多模塊搭建Eureka服務器端口過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Java反射 PropertyDescriptor類案例詳解

    Java反射 PropertyDescriptor類案例詳解

    這篇文章主要介紹了Java反射 PropertyDescriptor類案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • java隨機抽取指定范圍不重復的數字

    java隨機抽取指定范圍不重復的數字

    這篇文章主要介紹了java隨機抽取指定范圍不重復的數字的相關資料,需要的朋友可以參考下
    2016-06-06
  • Java Session會話追蹤原理深入分析

    Java Session會話追蹤原理深入分析

    web開發(fā)階段我們主要是瀏覽器和服務器之間來進行交互。瀏覽器和服務器之間的交互就像人和人之間進行交流一樣,但是對于機器來說,在一次請求之間只是會攜帶著本次請求的數據的,但是可能多次請求之間是會有聯系的,所以提供了會話機制
    2022-11-11
  • Spring?Boot?+?EasyExcel?+?SqlServer?進行批量處理數據的高效方法

    Spring?Boot?+?EasyExcel?+?SqlServer?進行批量處理數據的高效方法

    在日常開發(fā)和工作中,我們可能要根據用戶上傳的文件做一系列的處理,本篇文章就以Excel表格文件為例,主要介紹了Spring?Boot?+?EasyExcel?+?SqlServer?進行批量處理數據的高效方法,需要的朋友可以參考下
    2024-06-06

最新評論