当前位置: 首页 > article >正文

Bean的加载方式

Bean的加载方式

文章目录

  • Bean的加载方式
    • bean的xml方式声明
    • bean的加载方式二:XML+注解当时声明bean
    • bean的加载方式三:注解方式声明配置类
    • bean加载方式扩展——FactoryBean

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">

<!--    xml方式声明自己开发的bean-->
    <bean id="cat" class="com.itheima.bean.Cat"/>
    <bean class="com.itheima.bean.Dog"/>
<!--    xml声明第三方开发的Bean-->
    <bean  id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"/>
    <bean  class="com.alibaba.druid.pool.DruidDataSource"/>
    <bean  class="com.alibaba.druid.pool.DruidDataSource"/>
</beans>

bean的加载方式二:XML+注解当时声明bean

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       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
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
        ">


<!--    指定加载Bean的位置,Component-->
    <context:component-scan base-package="com.itheima.bean,com.itheima.config"/>

</beans>

在这里插入图片描述

//@Component
@Configuration
public class DbConfig {
    @Bean
    public DruidDataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        return ds;
    }
}

bean的加载方式三:注解方式声明配置类

在这里插入图片描述

@ComponentScan({"com.itheima.bean","com.itheima.config"})
public class SpringConfig3 {
}

要使用AnnotationConfigApplicationContext加载bean了

public class App3 {
    public static void main(String[] args) {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig3.class);
        String[] names = ctx.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println(name);
        }
    }
}

bean加载方式扩展——FactoryBean

在这里插入图片描述

public class DogFactoryBean implements FactoryBean<Dog> {
    @Override
    public Dog getObject() throws Exception {
        return new Dog();
    }

    @Override
    public Class<?> getObjectType() {
        return Dog.class;
    }

    @Override
    public boolean isSingleton() {
        return FactoryBean.super.isSingleton();
    }
}

http://www.kler.cn/a/155310.html

相关文章:

  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
  • SQL,力扣题目1127, 用户购买平台
  • Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南
  • Spark:不能创建Managed表,External表已存在...
  • three.js 杂记
  • 利用滑动窗口解题
  • 利用vue3SeamlessScroll简单实现列表的无限循环滚动
  • V8引擎类型转换(VIP课程)
  • ConvBNReLU的作用
  • mac 聚焦搜索不显示
  • 三十六、seata的部署和集成
  • 前端面试JS—map 和 forEach 的区别
  • MxL3706-AQ-R 2.0通道绑定同轴网络集成电路特性
  • 模块 A:web理论测试
  • 「Python编程基础」第5章:列表
  • C语言/C++实战项目雷霆飞机(代码改进)
  • 【Unity动画】状态机中层的融合原理与用法详解
  • 如何在Rocky Linux中安装nmon
  • Oracle(2-7)Instance and Media Recovery Structures
  • DAPP【】nodejs安装与npm路径更换
  • redis.conf官方配置文件及sentinel.conf官方配置文件
  • 基于Python实现的滑动验证码自动识别工具源码
  • 【Vue3】源码解析-虚拟DOM
  • Vue2生命周期、Vue3生命周期及其对比
  • LeetCode的几道题
  • 程序员の养生之道