Spring笔记上(基于注解开发)

news2025/1/12 1:42:29

一、第三方资源配置管理


以DataSource连接池对象为例,进行第三方资源配置管理。

1. 管理DataSource连接池对象


spring整合Druid、C3P0数据库连接池

1.1 管理Druid连接池


1、准备数据

create database if not exists spring_db character set utf8;
use spring_db;
create table if not exists tbl_account(
    id int primary key auto_increment,
    name varchar(20),
    money double
);
insert into tbl_account values(null,'tom',1000);
insert into tbl_account values(null,'jerry',1000);

2、导入druid的依赖坐标

<dependencies>
    <!--spring-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>
    <!--druid连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.16</version>
    </dependency>
    <!--mysql驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
</dependencies>

3、配置druid连接池的bean对象(在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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 数据源配置,使用druid数据库连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url"
                  value="jdbc:mysql://localhost:3306/spring_db?useSSL=false&amp;serverTimezone=Asia/Shanghai"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>

</beans>

在这里插入图片描述

mysql5.7的数据库驱动:一般会在url后面添加参数useSSL=false(关闭安全验证)

mysql8的数据库驱动:需要添加时区serverTimezone=Asia/Shanghai


4、编写测试(从IOC容器中获取连接池对象)

public class App {
    public static void main(String[] args) {
        // 创建IoC容器对象,加载spring核心配置文件
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 从IOC容器中获取连接池对象
        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
        System.out.println(dataSource);
    }
}

在这里插入图片描述


1.2 管理C3P0连接池


1、导入C3P0的依赖坐标

<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>

2、配置c3p0连接池的bean对象(在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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 数据源配置,使用c3p0数据库连接池-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql:///spring_db?useSSL=false"/>
        <property name="user" value="root"/>
        <property name="password" value="123456"/>
        <property name="maxPoolSize" value="1000"/>
    </bean>

</beans>

3、编写测试(从IOC容器中获取连接池对象)

public class App {
    public static void main(String[] args) {
        // 创建IoC容器对象,加载spring核心配置文件
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 从IOC容器中获取连接池对象
        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
        System.out.println(dataSource);
    }
}

在这里插入图片描述


2. 加载properties属性文件


将数据库连接参数抽取到一个单独的配置文件中,与Spring核心配置文件解耦。

1、编写jdbc.properties属性文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db?useSSL=false
jdbc.username=root
jdbc.password=123456

需要加前缀jdbc.xxx,不然后面使el表达式获取不到配置文件中的属性值。


2、在spring核心配置文件中开启context命名空间,加载jdbc.properties属性文件

在这里插入图片描述

突发小技巧:使用idea提示,生成上面的context命名空间配置。

在这里插入图片描述

<?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 https://www.springframework.org/schema/context/spring-context.xsd">
    
    <!-- 加载数据库配置文件-->
    <context:property-placeholder location="jdbc.properties"/>

</beans>

3、在配置连接池Bean的地方使用EL表达式获取jdbc.properties属性文件中的值

<bean class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

在这里插入图片描述


Spring加载properties文件写法(XML配置)

1、加载properties文件标准格式:

<context:property-placeholder location="classpath:*.properties"/>

2、不加载系统属性:

<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>

3、加载多个properties文件:

<context:property-placeholder location="jdbc.properties,msg.properties"/>

4、加载所有properties文件:

<context:property-placeholder location="*.properties"/>

二、Spring容器


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

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

相关文章

二、python基础语法篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 一 、print 1. end 2. \t对齐 二、字面量 1. 字面量的含义 2. 常见的字面量类型 3. 如何基于print语句完成各类字面量的输出 三、 注释的分类 1. 单行注释 2. 多行注释 3. 注释的…

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《9》

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《1》&#xff1a;论文源地址&#xff0c;克隆MXNet版本的源码&#xff0c;安装环境与测试&#xff0c;以及对下载的源码的每个目录做什么用的&#xff0c;做个解释。 MXNet的Faster R-CNN(基于区域提议网络的实时目标检测…

【手写 Vue2.x 源码】第四十一篇 - 组件部分 - 生成组件的真实节点

一&#xff0c;前言 上篇&#xff0c;介绍了组件部分-组件的生命周期&#xff0c;主要涉及以下几部分&#xff1a; 本篇&#xff0c;组件部分-生成组件的真实节点&#xff1b; 二&#xff0c;生成组件的真实节点 1&#xff0c;前文回顾 前篇&#xff0c;在 createElement 方…

【剧前爆米花--爪哇岛寻宝】Java中有关异常类的详细讲解

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaSE语法与底层详解》 文章分布&#xff1a;这是一篇关于Java中异常类的文章&#xff0c;在本篇文章中详细讲解了异常的使用逻辑和底层的执行过程&#xff0c;如有疏漏&#xff0c;欢迎大佬指正&#xff01; 目录 异常的体系结…

<C++>哈希

文章目录1. unordered系列容器1.1 unordered_map1.1.1 unordered_map的文档介绍1.1.2 unordered_map的接口说明1.2 unordered_set2. 哈希概念3. 哈希冲突4. 哈希函数5. 哈希冲突解决5.1 闭散列5.1.1 线性探测5.1.2 二次探测5.2 开散列5.3 开散列与闭散列比较6. 模拟实现1. unor…

配置野火霸道V2环境

配置野火霸道V2环境野火霸道开发板学习笔记信息说明下载安装Keil5配置Keil以使用DAP下载器DAP下载器的使用使用串口下载程序安装USB转串口驱动CH340检查是否安装成功配置MCUISP软件野火霸道开发板学习笔记 信息说明 日期 : 2023-01-23开发板: 野火霸道V2芯片型号: STM32F103Z…

[Paper Reading] Towards Conversational Recommendation over Multi-Type Dialogs

[Paper Reading] Towards Conversational Recommendation over Multi-Type Dialogs 文章目录[Paper Reading] Towards Conversational Recommendation over Multi-Type Dialogs论文简介快速回顾论文&#xff08;借助scispace&#xff09;梳理一下文章内容&#xff08;参考百度N…

自动化将Gitee的仓库导入Github

自动化将Gitee的仓库导入Github准备工作获取方式gitee的授权码github授权码工具源码用法下载gitee所有仓库到本地下载并更新到github&#xff08;自动创建仓库&#xff09;写在最后本方法能实现自动创建仓库 脚本及用法放在文章最后了&#xff0c;需要的自取 转跳到结尾 准备工…

高性能 Java 框架。Solon v1.12.3 发布(春节前兮的最后更)

一个更现代感的 Java "生态型"应用开发框架&#xff1a;更快、更小、更自由。不是 Spring&#xff0c;没有 Servlet&#xff0c;也无关 JavaEE&#xff1b;新兴独立的开放生态 &#xff08;已有150来个生态插件&#xff09; 。主框架仅 0.1 MB。 相对于 Spring Boot…

计算正整数的阶乘math.factorial()

【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】计算正整数的阶乘math.factorial()[太阳]选择题请问math.factorial(3)的输出结果是?import mathprint("【执行】math.factorial(3):",math.factorial(3))print("【执行】math.f…

带你玩转Jetson之Deepstream简明教程(二)Deepstream是什么?干什么?有什么优势?

1.Deepstream是什么&#xff1f; Deepstream是Nvidia公司推出的一套基于开源视频流框架Gstreamer的一套库。其本身由多个.lib.so和.h构成&#xff0c;其支持语言包括了Python和Cpp两种主流语言。你可以在任何Python或者Cpp编译器、开发环境中引用库的API构建属于你自己的推理流…

【c++之于c的优化】

目录&#xff1a;前言关键字一、命名空间1.什么是命名空间2.如何使用命名空间3.如何自己创建命名空间4.为什么要使用命名空间5.命名空间起别名6.匿名命名空间二、缺省参数定义缺省参数类型注意事项三、函数重载定义函数重载的三种方式操作系统的区分方式四、引用定义引用特性使…

【4-网络八股扩展】北京大学TensorFlow2.0

课程地址&#xff1a;【北京大学】Tensorflow2.0_哔哩哔哩_bilibiliPython3.7和TensorFlow2.1六讲&#xff1a;神经网络计算&#xff1a;神经网络的计算过程&#xff0c;搭建第一个神经网络模型神经网络优化&#xff1a;神经网络的优化方法&#xff0c;掌握学习率、激活函数、损…

【LeetCode每日一题】【2023/1/24】1828. 统计一个圆中点的数目

文章目录1828. 统计一个圆中点的数目方法1&#xff1a;枚举1828. 统计一个圆中点的数目 LeetCode: 1828. 统计一个圆中点的数目 中等\color{#FFB800}{中等}中等 给你一个数组 points &#xff0c;其中 points[i] [x_i, y_i] &#xff0c;表示第 i 个点在二维平面上的坐标。多…

【算法面试】队列算法笔试面试全解(金三银四面试专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

02_gpio子系统

总结 驱动程序还想控制gpio 可以不用读写寄存器 直觉用gpio子系统开发的接口就能用了 轻松做输入输出 获取当前值 详细介绍 用设备树里的节点 gpio1 介绍 imx6ull.dtsi gpio1 记录了控制器相关的寄存器基地址 gpio1: gpio209c000 {compatible "fsl,imx6ul-gpio"…

三、利用迁移学习进行模型微调(Datawhale组队学习)

文章目录安装配置环境准备图像分类数据集迁移学习微调训练图像分类模型导入环境图像预处理载入图像分类数据集建立类别和索引号之间映射关系定义数据加载器查看一个batch的图像和标注可视化一个batch的图像和标注模型的构建与测试可视化常见的迁移学习训练方式训练配置模型训练…

过完2022,依然记得仰望星空

&#x1f57a;作者&#xff1a;一名普普通通的双非大二学生迷茫的启明星&#x1f383;专栏&#xff1a;《数据库》《C语言从0到1专栏》《数据结构》《C语言杂谈》目录 ​编辑 一.2022之初 二.2022年中 三.2022年末 四.展望2023 一.2022之初 想起一年前这个时候&#xff0c…

07_plantform平台总线

总结 /sys/bus/plantform 平台总线其实就是继承 06_自己创建xbus总线 有了更多的玩法 和自己创建的xbus总线一样 平台总线也有dev和drv 需要这两个进行匹配之后 进行porbe调用 plantform_device 结构体中直觉继承了 struc device lantform_driver 继承了driver 详细介绍 plan…

树(基础部分)

章节目录&#xff1a;一、二叉树1.1 为什么要使用树&#xff1f;1.2 树的常用术语1.3 二叉树概念1.4 二叉树应用二、顺序存储二叉树2.1 概述2.2 基本应用三、线索化二叉树3.1 问题引出3.2 概述3.3 基本应用四、结束语一、二叉树 1.1 为什么要使用树&#xff1f; 数组存储方式&…