Spring管理第三方依赖

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

目录

纯注解文件注入

1.在pom.xml中导入依赖

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

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

4.创建测试类

5.运行结果如下:


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

纯注解文件注入

1.在pom.xml中导入依赖

需要导入的有spring的spring-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的配置文件后缀为

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

在包下建一个SpringConfig类

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类

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代替,如下

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.创建测试类

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://xiahunao.cn/news/3019185.html

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

相关文章

前端库推荐:markdown语法解析库-marked

这里写自定义目录标题 marked 介绍项目库应用展示微信md格式化工具 核心工作流setOptions 和 use()Options 选项renderer块级渲染方法 block-level行内渲染方法 inline-level hookspreprocess 处理之前postprocess 处理之后 官网扩展插件高亮自定义扩展 marked 介绍 Marked 是…

第二证券今日投资参考:北方稀土上调挂牌价 磷化工产业链迎催化

昨日&#xff0c;沪指早盘窄幅震动&#xff0c;午后小幅拉升&#xff0c;科创50指数弱势下探。截至收盘&#xff0c;沪指涨0.22%报3147.74点&#xff0c;深证成指微跌0.08%报9770.94点&#xff0c;创业板指跌0.14%报1892.54点&#xff0c;上证50指数涨0.16%&#xff0c;科创50指…

iframe通信postMessage

iframe嵌入页面是实现微前端的方式之一。由于浏览器的跨域限制&#xff0c;iframe与父页面之间的通信变得不是那么容易。postMessage解决了这个问题。从广义上讲&#xff0c;一个窗口可以获得对另一个窗口的引用&#xff08;比如 targetWindow window.parent&#xff09;&…

JavaEE概述 + Maven

文章目录 一、JavaEE 概述二、工具 --- Maven2.1 Maven功能 仓库 坐标2.2 Maven之项目构建2.3 Maven之依赖管理 三、插件 --- Maven Helper 一、JavaEE 概述 Java SE、JavaEE&#xff1a; Java SE&#xff1a;指Java标准版&#xff0c;适用于各行各业&#xff0c;主要是Java…

UE灯光:点光和聚光灯的强度单位(cd、lm)

在虚幻引擎&#xff08;UE&#xff09;中&#xff0c;点光和聚光灯的光强使用两种不同的单位进行度量&#xff1a; 坎德拉&#xff08;cd&#xff09;&#xff1a;坎德拉是光强度的国际单位&#xff08;SI单位&#xff09;。它代表光源在特定方向上每单位立体角发出的光通量。…

2024年数维杯数学建模A题思路

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

求Fibonacci数列前40个数

这个数列有如下特点&#xff1a;第1,2两个数为1&#xff0c;1。从第3个数开始&#xff0c;该数是其前面两个数之和。 解题思路&#xff1a; 这是一个有趣的古典数学问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生…

编写burp插件实现数据包自定义修改

背景 安全测试工作中经常遇到各种加密加签或者添加了其它安全措施的数据包。以加密为例&#xff0c;为了测试正常进行&#xff0c;我们需要解密后修改数据包再进行加密还原&#xff0c;手工的话很是繁琐且没必要&#xff0c;所以我们需要一个工具帮我们自动化的实现。由于我们…

为什么跑腿越来越受到年轻人的青睐

跑腿服务越来越受到年轻人的青睐&#xff0c;主要源于以下几个方面的原因&#xff1a; 1. 便捷快速&#xff1a;在快节奏的现代生活中&#xff0c;年轻人追求的是效率和速度。跑腿服务提供了一种即时、便捷的解决方案&#xff0c;使他们能够在繁忙的生活和工作中节省时间和精力…

两个手机在一起ip地址一样吗?两个手机是不是两个ip地址

在数字时代的浩瀚海洋中&#xff0c;手机已经成为我们生活中不可或缺的一部分。随着移动互联网的飞速发展&#xff0c;IP地址成为了连接手机与互联网的桥梁。那么&#xff0c;两个手机在一起IP地址一样吗&#xff1f;两个手机是不是两个IP地址&#xff1f;本文将带您一探究竟&a…

一些js的基础

五大主流浏览器 内核 IE trident chrome webkit blink safari webkit firefox gecko opera presto ECMA European Computer Manufactures Association 欧洲计算机制造联合会 评估、开发 认可电信、计算机标准 ECMA-262 脚本语言的规范 ECMAScript 编程语言 1、编译型 翻译…

分享一个php常驻内存多进程任务的扩展

前言 最近在摸鱼的时候发现一个PHP常驻内存多进程任务扩展包&#xff1a;EasyTask: PHP常驻内存多进程任务管理器&#xff0c;支持定时任务(PHP resident memory multi-process task manager, supports timing tasks) (gitee.com)&#xff0c;支持php使用多线程处理任务。之前…

使用 Docker 部署 TaleBook 私人书籍管理系统

1&#xff09;项目介绍 GitHub&#xff1a;https://github.com/talebook/talebook Talebook 是一个简洁但强大的私人书籍管理系统。它基于 Calibre 项目构建&#xff0c;具备书籍管理、在线阅读与推送、用户管理、SSO 登录、从百度/豆瓣拉取书籍信息等功能。 友情提醒&#x…

Android内核之Binder读写通信:binder_ioctl_write_read用法实例(七十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

亚马逊自养号测评系统搭建技术要点解析

亚马逊自养号测评系统搭建技术要求主要涵盖了网络环境、IP管理、设备配置、浏览器防关联、支付卡选择与管理以及账号管理等多个方面。测评是否稳定长久这些条件都是缺一不可的&#xff0c;以下是一些具体的技术要求&#xff1a; 1. 网络环境&#xff1a;使用国外服务器在云端搭…

数字人捕捉、建模与合成

在感知系统中&#xff0c;我们与外部合作者一起创建逼真的 3D 人类&#xff0c;其行为可以像虚拟世界中的真实人类一样。这项工作在今天有许多实际应用&#xff0c;并且对于元宇宙的未来至关重要。但是&#xff0c;在感知系统中&#xff0c;我们的目标是科学的——通过重现人类…

AI助力制造行业探索创新路径

近期&#xff0c;著名科技作家凯文凯利&#xff08;K.K.&#xff09;来到中国&#xff0c;发表了一场演讲,给广大听众带来了深刻的启示。他在演讲中强调了人工智能&#xff08;AI&#xff09;对全球经济的重大影响&#xff0c;并提出了AI发展的多个观点&#xff1a; AI的多样性…

【Linux进程间通信(五)】System V 信号量

&#xff08;一&#xff09;什么是信号量 互斥相关概念 1、并发&#xff1a; 2、互斥 3、临界资源&临界区 4、原子性 &#xff08;二&#xff09;信号量的理解 &#xff08;三&#xff09;信号量的两种基本操作 P / V &#xff08;四&#xff09;信号量的内核数据结…

工厂车间冷风机降温通风措施

冷风机的工作原理主要基于蒸发冷却原理&#xff0c;以下是其具体的工作流程&#xff1a; 空气吸入&#xff1a;当冷风机开始工作时&#xff0c;首先通过风扇将车间内的热空气吸入冷风机的机体内。蒸发冷却&#xff1a;冷风机内部有一个或多个湿帘或水帘&#xff0c;当热空气通…

浅谈程序员的实用神器

作为一个程序员&#xff0c;有很多实用的工具和资源可以帮助我们提高工作效率和解决问题。以下是一些常用的程序员实用神器&#xff1a; 集成开发环境&#xff08;IDE&#xff09;&#xff1a;如Visual Studio Code、PyCharm、Eclipse等&#xff0c;提供代码编辑、调试、版本控…