Spring配置非定义的Bean

news2024/11/18 1:48:25

前言

  • 在前文中,xml配置文件中的Bean都是我们自己定义配置的,例如:UserDaoImpl,UserDAO等。但是在实际开发过程中有些功能类并不是我们自己定义的,而是使用第三方jar包中的,俺么这些Bean要想让Spring进行管理,也需要对其进行配置。
  • 配置非自定义的Bean需要考虑如下两个问题
    • 被配置的bean的实例化方式是什么?无参构造,有参构造(构造方法),静态工厂方式还是实例工厂方式(工厂方式)。具体见文章:写文章-CSDN创作中心
    • 被配置的Bean是否需要注入必要属性

配置Druid数据源交由Spring管理

  • 导入Druid的maven坐标
    •         <!--    todo    MySQL驱动-->
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>5.1.49</version>
              </dependency>
      
              <!--    todo    druid 数据源-->
              <dependency>
                  <groupId>com.alibaba</groupId>
                  <artifactId>druid</artifactId>
                  <version>1.1.23</version>
  • 根据Druid类中的set方法来设置必要的属性

  • 配置信息如下


    •  

  • 测试代码

    • package com.example.Test;
      
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class TestApplicationContext {
          public static void main(String[] args) {
              // 指定环境
              System.setProperty("spring.profiles.active", "dev");
              ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
              Object dataSource = context.getBean("dataSource");
              System.out.println(dataSource);
          }
      }
      
  • 运行结果


    •  

配置Connection交由Spring管理

  • Connection的产生是通过DriverManager的静态方法getConnection获取的,所以我们要使用静态工厂方式配置
    • 手动建立连接
      •         // 加载驱动
                Class.forName("com.mysql.jdbc.Driver");
                // 建立连接
                Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db01", "root", "123456");
                System.out.println(connection);
    • 使用配置文件进行建立(静态工厂方法

      •     <bean id="classA" class="java.lang.Class" factory-method="forName">
                <!--        为forName()方法中的参数设定值 name为参数名称,value为参数值-->
                <constructor-arg name="className" value="com.mysql.jdbc.Driver"></constructor-arg>
            </bean>
            <bean id="connection" class="java.sql.DriverManager" factory-method="getConnection">
                <constructor-arg value="jdbc:mysql://localhost:3306/db01" name="url"></constructor-arg>
                <constructor-arg value="自己的" name="user"></constructor-arg>
                <constructor-arg value="自己的" name="password"></constructor-arg>
            </bean>
    • 测试代码

      • package com.example.Test;
        
        import org.springframework.context.support.ClassPathXmlApplicationContext;
        
        
        public class TestApplicationContext {
            public static void main(String[] args) {
                ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
                System.out.println(context.getBean("connection"));
            }
        }
        
    • 运行结果

配置日期对象交由Spring管理

  • 原始代码如下
    •         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
              Date date = simpleDateFormat.parse("2023-08-27 07:20:00");
  • 配置文件(实例工厂方法

    •     <bean id="simpleDateFormat" class="java.text.SimpleDateFormat">
              <constructor-arg name="pattern" value="yy-MM-dd HH:mm:ss"></constructor-arg>
          </bean>
          <bean id="date" factory-bean="simpleDateFormat" factory-method="parse">
              <constructor-arg name="source" value="2023-08-27 07:20:00"></constructor-arg>
          </bean>
  • 测试类

    • package com.example.Test;
      
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      
      public class TestApplicationContext {
          public static void main(String[] args) {
              ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
              System.out.println(context.getBean("date"));
      
          }
      }
      
  • 运行结果

配置MyBatis的SqlSqlSessionFactory交由Spring管理

  • 导入MyBatis的maven坐标
    • <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.8</version>
      </dependency>
      
  • 代码配置

    •         // 静态工厂方法
              InputStream resourceAsStream = Resources.getResourceAsStream("MyBatisConfig.xml");
              // 无参构造
              SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
              // 实例工厂方法
              SqlSessionFactory build = builder.build(resourceAsStream);
      
  • 配置文件

    •     <!--    todo 无参构造-->
          <bean id="builder" class="org.apache.ibatis.session.SqlSessionFactoryBuilder"></bean>
          <!--  todo   静态工厂方法-->
          <bean id="resources" class="org.apache.ibatis.io.Resources" factory-method="getResourceAsStream">
              <constructor-arg value="MyBatisConfig.xml" name="resource"></constructor-arg>
          </bean>
          <!-- todo 实例化工厂方法-->
          <bean id="build" factory-bean="builder" factory-method="build">
              <constructor-arg name="inputStream" ref="resources"></constructor-arg>
          </bean>
  • 测试代码

    • package com.example.Test;
      
      
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      
      
      public class TestApplicationContext {
          public static void main(String[] args)  {
              ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
              System.out.println(context.getBean("build"));
      
      
          }
      }
      
  • 运行结果

小结

  • 对于配置非自定义的bean,首先得了解它是由什么方法创建的bean对象,具体文章参考:写文章-CSDN创作中心
  • 确定是哪一种方式之后就可以按照固定的套路来进行bean的配置了 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1025396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年PMP考试改革情况?新教材和新题型?

改革就是使用新考纲和新教材。教材由第六版变为第七版&#xff0c;这个问题也不大&#xff0c;主要是根据考纲的内容出题&#xff0c;备考学习预测敏捷项目管理内容即可。 没有出新的改为新题型的通知&#xff0c;但要随时做好题型变化的准备&#xff0c;或许题型会增加填空题…

多少得有点升级,才能对得起价格!iPhone15系列电池寿命见长

我有一些好消息。根据我们的电池测试&#xff0c;iPhone 15系列中的每一款机型都比前代机型提供了更好的电池寿命。这可能是由于每部手机中都有稍大的电池和更高效的芯片。 我们对iPhone 15、iPhone 15 Plus、iPhone 15 Pro和iPhone 15 Pro Max进行了Tom’s Guide电池测试&…

SAP DN已发货但是需求还挂在MD04上的异常处理(SE38执行程序:ATP_VBBE_CONSISTENCY OR SDRQCR21)

背景&#xff1a;DN 80074061已经发完货&#xff0c;但是在MD04上还挂着它的需求 处理方法&#xff1a; HANA S4 版本&#xff0c; SE38 执行程序 ATP_VBBE_CONSISTENCY HANA之前的版本执行程序 SDRQCR21 以 ATP_VBBE_CONSISTENCY 为例&#xff0c;先选择模拟模式 执行&…

C#上位机:现代编程中的全能工具?

C#上位机&#xff1a;现代编程中的全能工具&#xff1f; C#作为现代、安全、易用的编程语言&#xff0c;在多领域具有广泛应用&#xff0c;尤其在上位机开发中脱颖而出。输入“777”&#xff0c;即刻获取关于上位机开发和数据可视化的专业学习资料&#xff0c;工业自动化、物…

打造自己的美颜应用:使用视频直播美颜sdk的步骤

当下&#xff0c;视频直播已经成为人们分享自己生活、技能和兴趣的流行方式。但是&#xff0c;随着竞争的加剧&#xff0c;提供高质量视频直播体验变得至关重要。其中一个重要因素是美颜效果&#xff0c;这已经成为吸引观众的重要因素之一。幸运的是&#xff0c;现在有许多视频…

pycharm导入包提示:ModuleNotFoundError: No module named ‘xxx‘

解决方法 1、进入file-settings-projects-python interpreter&#xff0c;点击Show All&#xff1a; 2、在Show All窗口中按如下操作&#xff1a; 保存后即可

电脑内存怎么看?一分钟搞定!

电脑内存是计算机系统中重要的硬件组件之一&#xff0c;它直接影响着系统的性能和运行速度。了解电脑内存的使用情况对于优化系统性能和进行硬件升级非常重要。本文将介绍电脑内存怎么看的三个方法&#xff0c;以便更好地管理计算机性能。 方法1&#xff1a;任务管理器 电脑使…

易点易动RFID固定资产管理系统:实现极速盘点与全生命周期管理

在现代企业管理中&#xff0c;固定资产的盘点和管理一直是一项繁琐而重要的任务。然而&#xff0c;通过易点易动RFID固定资产管理系统&#xff0c;集团公司可以实现固定资产的快速盘点、全生命周期管理以及有效防止资产丢失。本文将详细介绍易点易动RFID固定资产管理系统如何助…

Jmeter性能测试吞吐量控制器使用小结

吞吐量控制器(Throughput Controller)场景: 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现.。 jmeter性能测试&#xff1a;2023最新的大厂jmeter性能测试全过程项目实战详解&#xff0c;悄悄收藏&#xff0c;后面就看不到…

【新版】系统架构设计师 - 案例分析 - 系统维护与设计模式

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 系统维护与设计模式典型例题 1典型例题 2 架构 - 案例分析 - 系统维护与设计模式 典型例题 1 某企业两年前自主研发的消防集中控制软件系统在市场上取得了较好的业绩&#xff0c;目前…

【Hash表】出现次数最多的单词-力扣 819

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

GE WESDAC D20ME 模拟输入电子模块

GE WESDAC D20ME 是一款模拟输入电子模块&#xff0c;通常用于工业自动化和控制系统中&#xff0c;用于采集模拟信号和传感器数据。以下是该模块的一些主要产品功能&#xff1a; 模拟输入通道&#xff1a;WESDAC D20ME 模块通常具有多个模拟输入通道&#xff0c;用于接收模拟信…

NI SCXI-1127 伺服驱动模块

NI SCXI-1127 伺服驱动模块是 National Instruments&#xff08;NI&#xff09;生产的一种用于伺服控制系统的模块。以下是该模块的一些主要产品功能&#xff1a; 伺服控制&#xff1a;SCXI-1127 模块专门设计用于伺服控制应用。它可以接受控制信号并驱动伺服电机以实现精确的位…

playwright的安装与使用

一、安装 所有安装严格按照指定版本&#xff0c;不然可能会报错&#xff0c;为啥报错我也不知道 1、准备环境 win10&#xff08;playwright好像不支持win7 python2&#xff09; 2、 安装python3.7.9&#xff08;这个是为了兼容robot&#xff09; https://www.python.org/do…

Spring实例化源码解析之BeanFacotryPostProcessor和BeanDefinitionRegistryPostProcessor(一)

invokeBeanFactoryPostProcessors 前言 AbstractApplicationContext类的refresh方法是spring实例化流程的开始。本章主要是介绍invokeBeanFactoryPostProcessors(beanFactory)方法&#xff0c;对其内部源码进行详细分析。接下来就来看看这句简单的代码后面具体做了什么。Spri…

9月第3周榜单丨哔哩哔哩飞瓜数据B站UP主排行榜发布!

飞瓜轻数发布2023年9月11日-9月17日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能…

每日一题~二叉搜索树中的插入操作

题目链接&#xff1a;701. 二叉搜索树中的插入操作 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 思路分析&#xff1a;由题可知&#xff0c;题目的要求是给我们一个二叉搜索树和一个 val&#xff0c;将这个 val 插入到二叉搜索树中&#xff0c;并且这个树仍…

新型BI解决方案:SaaS BI,在浏览器上分析数据

在当今数字化时代&#xff0c;企业需要处理海量数据以制定精确的业务策略。然而&#xff0c;传统BI工具的繁琐安装和配置过程&#xff0c;让许多企业望而却步。幸运的是&#xff0c;一种新型的商业智能&#xff08;BI&#xff09;解决方案——SaaS BI系统&#xff0c;解决了这个…

戴口罩 目标检测数据集-12000张

今天要介绍的数据集则是戴口罩 目标检测数据集&#xff1a; 数据集名称&#xff1a;戴口罩 目标检测数据集 数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;以…

面试常谈的Binder理解,每个人都不一样~

面试官提了一个问题&#xff0c;我们来看看 &#x1f60e;、&#x1f628; 和 &#x1f914;️ 三位同学的表现如何吧 &#x1f60e; 自认为无所不知&#xff0c;水平已达应用开发天花板&#xff0c;目前月薪 10k 面试官️&#xff1a;谈谈你对 binder 的理解 &#x1f60e;&a…