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

Spring Bean的定義概念和使用

 更新時(shí)間:2023年04月11日 10:58:54   作者:Jay....  
這篇文章主要介紹了Spring Bean的定義概念和使用,Spring bean對(duì)象是構(gòu)成應(yīng)用程序的支柱,也是由Spring IoC容器管理的。bean是一個(gè)被實(shí)例化,組裝,并通過Spring IoC容器所管理的對(duì)象。這些bean是由用容器提供的配置元數(shù)據(jù)創(chuàng)建的

定義

Spring bean 對(duì)象是構(gòu)成應(yīng)用程序的支柱,也是由 Spring IoC 容器管理的。bean 是一個(gè)被實(shí)例化,組裝,并通過 Spring IoC 容器所管理的對(duì)象。這些 bean 是由用容器提供的配置元數(shù)據(jù)創(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>

當(dāng)開啟后,將可以在代碼上使用注解,這表明 Spring 應(yīng)該自動(dòng)連接值到屬性,方法和構(gòu)造函數(shù)。如下是常用的注解:

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

基于Java的配置

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

Component系列

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

依附于@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上所有的注解信息,返回要導(dǎo)入的類名

@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定義注冊(cè)器,傳入@Import注解所在類Demo上所有的注解信息:

Mybatis的Mapper接口就是用這種方式將Bean定義注冊(cè)到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

當(dāng)通過“factoryBean”獲取實(shí)例時(shí),F(xiàn)actoryBean會(huì)調(diào)用getObject()方法;

當(dāng)通過“&factoryBean”獲取實(shí)例時(shí),返回FactoryBean的實(shí)例;

當(dāng)通過Demo.class來獲取bean實(shí)例時(shí),調(diào)用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;
    }
}

到此這篇關(guān)于Spring Bean的定義概念和使用的文章就介紹到這了,更多相關(guān)Spring Bean內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot詳細(xì)講解斷言機(jī)制原理

    SpringBoot詳細(xì)講解斷言機(jī)制原理

    斷言Assertion是測(cè)試方法中的核心部分,用來對(duì)測(cè)試需要滿足的條件進(jìn)行驗(yàn)證。這些斷言方法都是org.junit.jupiter.api.Assertions的靜態(tài)方法。檢查業(yè)務(wù)邏輯返回的數(shù)據(jù)是否合理。所有的測(cè)試運(yùn)行結(jié)束以后,會(huì)有一個(gè)詳細(xì)的測(cè)試報(bào)告
    2022-06-06
  • 使用Springboot封裝一個(gè)自適配的數(shù)據(jù)單位轉(zhuǎn)換工具類

    使用Springboot封裝一個(gè)自適配的數(shù)據(jù)單位轉(zhuǎn)換工具類

    我們?cè)诮邮涨芭_(tái)傳輸?shù)臄?shù)據(jù)時(shí),往往SpringBoot使用內(nèi)置的數(shù)據(jù)類型轉(zhuǎn)換器把我們提交的數(shù)據(jù)自動(dòng)封裝成對(duì)象等類型,下面這篇文章主要給大家介紹了關(guān)于使用Springboot封裝一個(gè)自適配的數(shù)據(jù)單位轉(zhuǎn)換工具類的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 輕松掌握J(rèn)ava享元模式

    輕松掌握J(rèn)ava享元模式

    這篇文章主要幫助大家輕松掌握J(rèn)ava享元模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Spring Cloud 2020.0.0正式發(fā)布再見了Netflix

    Spring Cloud 2020.0.0正式發(fā)布再見了Netflix

    這篇文章主要介紹了Spring Cloud 2020.0.0正式發(fā)布再見了Netflix,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java包機(jī)制及javadoc詳解

    Java包機(jī)制及javadoc詳解

    為了更好地組織類,Java提供了包機(jī)制,用于區(qū)別類名的命名空間,一般利用公司域名倒置作為包名,這篇文章主要介紹了Java包機(jī)制以及javadoc,需要的朋友可以參考下
    2022-10-10
  • mybatis執(zhí)行批量更新batch update 的方法(oracle,mysql兩種)

    mybatis執(zhí)行批量更新batch update 的方法(oracle,mysql兩種)

    這篇文章主要介紹了mybatis執(zhí)行批量更新batch update 的方法,提供oracle和mysql兩種方法,非常不錯(cuò),需要的朋友參考下
    2017-01-01
  • SpringBoot?容器刷新前回調(diào)ApplicationContextInitializer

    SpringBoot?容器刷新前回調(diào)ApplicationContextInitializer

    這篇文章主要為大家介紹了SpringBoot?容器刷新前回調(diào)ApplicationContextInitializer使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • springmvc和js前端的數(shù)據(jù)傳遞和接收方式(兩種)

    springmvc和js前端的數(shù)據(jù)傳遞和接收方式(兩種)

    本文介紹了springmvc和js前端的數(shù)據(jù)傳遞和接收方式(兩種),詳細(xì)的介紹了兩種方式,一種是json格式傳遞,另一種是Map傳遞,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-12-12
  • springboot yml中profiles的巧妙用法(小白必看多環(huán)境配置)

    springboot yml中profiles的巧妙用法(小白必看多環(huán)境配置)

    這篇文章主要介紹了springboot yml中profiles的巧妙用法,非常適合多環(huán)境配置場(chǎng)景,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • IDEA報(bào)錯(cuò):Unable to save settings Failed to save settings

    IDEA報(bào)錯(cuò):Unable to save settings Failed to save settings

    這篇文章主要介紹了IDEA報(bào)錯(cuò):Unable to save settings Failed to save settings的相關(guān)知識(shí),本文給大家分享問題原因及解決方案,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

五莲县| 腾冲县| 柘城县| 阳谷县| 建昌县| 台湾省| 同江市| 琼海市| 凤城市| 新余市| 丁青县| 屯门区| 怀柔区| 海原县| 车险| 文成县| 綦江县| 托克逊县| 内乡县| 宝清县| 姜堰市| 龙海市| 广宁县| 卫辉市| 漠河县| 岳普湖县| 普格县| 溆浦县| 石家庄市| 鄂尔多斯市| 特克斯县| 潮州市| 临江市| 延川县| 巍山| 德格县| 涞水县| 广宁县| 安多县| 安达市| 咸宁市|