Spring管理第三方依赖

embedded/2024/9/25 4:24:31/

在开发中,我们常需要根据业务需求导入我们需要的第三方依赖包,本文主要以导入druid数据库来连接池为案例讲解有关spring管理第三方依赖

目录

纯注解文件注入

1.在pom.xml中导入依赖

2.在com.lcyy包下建立一个config包用于配置类的实现

3.在config包下建立一个JdbcConfig类

4.创建测试类

5.运行结果如下:


以下我将通过纯注解方式实现

纯注解文件注入

1.在pom.xml中导入依赖

需要导入的有springspring-context,spring-jdbc,druid

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.31</version></dependency>
 <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.31</version></dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.18</version></dependency>

2.在com.lcyy包下建立一个config包用于配置类的实现

在resource下建立一个jdbc的配置文件后缀为

java">jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/db
jdbc.username=root
jdbc.password=zhien0516

在包下建一个SpringConfig类

java">package com.lcyy.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;@Configuration
@ComponentScan("com.lcyy")
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
}

 其中@Configuration 表明该类是一个配置类

@ComponentScan("com.lcyy")  表示包的扫描,表示在com.lcyy下的所有包都会被spring ioc容器管理

@PropertySource 表示加载jdbc的配置文件

3.在config包下建立一个JdbcConfig类

java">package com.lcyy.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;@Configuration
public class JdbcConfig {@Value("druid")private String age;@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String username;@Value("${jdbc.password}")private String password;@Bean("dataSource")public DataSource dataSource(){DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(username);ds.setPassword(password);System.out.println("我是德鲁伊"+age);//测试德鲁伊return ds;}
}

 注意:

@Configuration 可以在SpringConfig类上用@Import代替,如下

java">package com.lcyy.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;@Configuration
@ComponentScan("com.lcyy")
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class})
public class SpringConfig {}

4.创建测试类

java">import com.lcyy.config.SpringConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class DataSource {public static void main(String[] args) {//获取ioc容器AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);//根据类型获取bean,并强制转换为DataSource类型Object ctxBean =  ctx.getBean("dataSource");System.out.println(ctxBean);}
}

注意:此时这里用的是纯注解方式实现第三方技术管理依赖,若用xml文件实现,则获取容器就不是用的 AnnotationConfigApplicationContext 而是用的 ClassPathXmlApplicationContext

ClassPathXmlApplicationContext里填写的是用SpringContext.xml,而AnnotationConfigApplicationContext 里填写的是SpringConfig.class类

5.运行结果如下:


http://www.ppmy.cn/embedded/35886.html

相关文章

【栈】Leetcode 1047. 删除字符串中的所有相邻重复项

题目讲解 1047. 删除字符串中的所有相邻重复项 算法讲解 使用栈这个数据结构&#xff0c;每一次入栈的时候观察此时的字符和当前栈顶字符是否相等&#xff0c;如相等&#xff1a;栈顶出栈&#xff1b;不相等&#xff1a;入栈 class Solution { public:string removeDuplica…

Backpropagation反向传播算法【总结】

概念介绍 Backpropagation本质上就是一个提升Gradient Descent效率的算法&#xff0c;核心在于其可以有效率地计算出一个偏移量来update下一组未知参数。 难点在于&#xff1a;Neural Network有很多层&#xff0c;而且每层参数都非常多&#xff0c;所以不能立即算出来该组未知…

【深度学习实战(30)】训练框架之使用tensorboard记录loss

一、 安装Tensorboard库 pip install tensorflow pip install tensorboardx二、LossHistory类实现过程 1. init构造函数 传入参数log保存路径&#xff0c;模型&#xff0c;模型输入尺寸 def __init__(self, log_dir, model, input_shape):实例化SummaryWriter对象 self.wr…

OpenCV 库来捕获和处理视频输入和相似度测量(73)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV的周期性噪声去除滤波器(70) 下一篇 :使用 OpenCV 创建视频(74) ​ 目标 如今&#xff0c;拥有数字视频录制系统供您使用是很常见的。因此&#xff0c;您最终会遇到不再处理一批图像&#xf…

Node.js及其生态:分享Node.js的基础知识,包括调试,流,模块等。同时也可以介绍一些流行框架如Express,Koa,NestJS等

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞 I/O 模型&#xff0c;使其轻量又高效。Node.js 的包生态系统&#xff08;npm&#xff09;是全球最大的开源库生态系统。 一些基础概念&#xff1a; 调试&#xff1a;你可以使用…

Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器和Supervisor守护服务

在 CentOS 7 上部署 ASP.NET Core 应用程序并配置 Nginx 作为反向代理服务器以及 Supervisor 作为守护服务涉及几个步骤。以下是详细的步骤指南&#xff1a; 1. 安装 .NET Core SDK 首先&#xff0c;你需要在 CentOS 7 上安装 .NET Core SDK。你可以从 Microsoft 的官方文档中…

2024年第七届可再生能源与环境工程国际会议(REEE 2024)即将召开!

2024年第七届可再生能源与环境工程国际会议&#xff08;REEE 2024&#xff09;将于2024 年8月28-30日在法国南特举行。共绘绿色未来&#xff0c;全球同频共振&#xff01;REEE 2024将汇聚全球可再生能源与环境工程领域的专家学者和业界精英&#xff0c;共同探讨行业发展的前沿技…

X 推出 Stories 功能,由 Grok AI 生成新闻摘要

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…