Spring第六天(注解开发第三方Bean)

news2024/9/20 10:45:35

注解开发管理第三方Bean

显然,我们无法在第三方Bean中写入诸如@service这样的注解,所以,Spring为我们提供了@Bean这一注解来让我们通过注解管理第三方Bean

 

第二种导入方式由于可读性太低,故只介绍第一种导入方式,这里我们以导入阿里巴巴的Druid为例 

由于直接在SpringConfig这个我们设计的Spring配置文件中写所有的文件会导致该文件十分臃肿,所以我们选用给每一个外部第三方Bean都书写他们独立的配置文件,下面看示例:

package com.cacb.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class JbdcConfig {
    //定义一个方法获得要管理的对象
    @Bean("dataSource")
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName("com.mysql.jbdc.Driver");
        ds.setUrl("jbdc:mysql://localhost:3306/cary_cacb");
        ds.setUsername("root");
        ds.setPassword("password");
        return ds;
    }
}

再看SpringConfig也就是核心配置类中的书写:

@Configuration
@Import(JbdcConfig.class)
public class SpringConfig {

}

可以看到我们通过@Import()注解来讲独立配置文件导入了核心配置文件 。

注解开发为第三方Bean注入资源

简单类型

海事使用上例,例如

        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName("com.mysql.jbdc.Driver");
        ds.setUrl("jbdc:mysql://localhost:3306/cary_cacb");
        ds.setUsername("root");
        ds.setPassword("password");

这些方法中传入的内容应该来自于Properties文件,所以我们应该使用注解注入这些类型,方法如下(只用classname举例)

@Value("com.mysql.jbdc.Driver")
private String classname;
//...

ds.setDriverClassName("com.mysql.jbdc.Driver");

引用类型

例如,我们要传入com.cacb.dao包中的BookDaoImpl这一Bean

首先,要使用注解将BookDaoImpl配置为Bean

package com.cacb.dao.Impl;

import com.cacb.dao.BookDao;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Repository;

@Repository
public class BookDaoImpl implements BookDao {
    @Override
    public void save() {
        System.out.println("BookDao saving!");
    }
}

接下来,我们肯定是要让核心配置文件扫描这一包的

@ComponentScan("com.cacb.dao")

下面便是引用类型注解的特殊之处,我们需要向配置类传入相应的对象, 

public DataSource dataSource(BookDao bookDao)

 Spring按类型自动装配

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

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

相关文章

项目过程管理(禅道)

文章目录 1、禅道的简介2、禅道的安装3、禅道的使用3.1、超级管理员使用操作3.2、产品经理使用操作3.3、项目经理使用操作3.4、测试主管使用操作3.5、项目经理(新建一个项目)3.6、测试主管(对项目发布的第一个版本进行一个测试)3.…

Java 面向对象基础 (二)

Java 面向对象基础 (二) 文章目录 Java 面向对象基础 (二)面向对象三大特征封装继承多态 接口和抽象类有什么共同点和区别?深拷贝和浅拷贝区别了解吗?什么是引用拷贝?浅拷贝深拷贝 文章来自Java Guide 用于学习如有侵权,立即删除 …

(2)(2.1) Andruav Android Cellular(一)

文章目录 前言 1 Andruav 是什么? 2 Andruav入门 3 Andruav FPV 4 Andruav GCS App​​​​​​​ 前言 Andruav 是一个基于安卓的互联系统,它将安卓手机作为公司计算机,为你的无人机和遥控车增添先进功能。 1 Andruav 是什么&#xff…

【Linux】相关背景及环境搭建

前言: 认识 Linux, 了解 Linux 的相关背景,学会如何使用云服务器,掌握使用远程终端工具 xshell 登陆 Linux 服务器 文章目录 一、Linux介绍1.1 关于UNIX1.2 Linux的诞生及发展历程1.3 Linux开源1.4 Linux在各个行业的现状1.5 发行版本 二、Li…

黑色金属厂房3d数据可视化综合平台进一步保障生产效率

在当今的数字化时代,钢铁厂面临着降本增效、绿色环保、安全第一等发展问题,亟需寻找更有效的解决方案,数字孪生公司深圳华锐视点利用先进的数字孪生可视化、web3D开发和VR虚拟仿真技术制作数字孪生钢铁厂可视化管控平台,实现对钢铁…

SCI 2区论文:医疗保健中心训练有素的脑膜瘤分割模型的性能测试-基于四个回顾性多中心数据集的二次分析

基本信息 标题:Performance Test of a Well-Trained Model for Meningioma Segmentation in Health Care Centers: Secondary Analysis Based on Four Retrospective Multicenter Data Sets中文标题:医疗保健中心训练有素的脑膜瘤分割模型的性能测试&am…

Prompt高级技巧:Few-Shots、COT、SC、TOT、Step-Back

CRISPE框架 如图所示。所谓CRISPE框架,指的是: CR:Capacity and Role(能力与角色)。你希望 ChatGPT 扮演怎样的角色。I:Insight(洞察),背景信息和上下文。S:&#xff08…

记一次幸运的cnvd证书获取过程

漏洞描述: 如XX后台管理系统V2.0存在水平越权,由于应用系统中Id参数可控并未经校验导致信息被越权修改,攻击者可通过遍历Id参数批量更改其他用户数据及个人信息。 起因: 一天下午某师傅星球中发了一篇文章分享,描述该系统存在弱…

Labview局部变量、全局变量、引用、属性节点、调用节点用法理解及精讲

写本章前想起题主初学Labview时面对一个位移台程序,傻傻搞不清局部变量和属性节点值有什么区别,概念很模糊。所以更新这篇文章让大家更具象和深刻的去理解这几个概念,看完记得点赞加关注喔~ 本文程序源代码附在后面,大家可以自行下…

解决 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 报错

在使用POI导出Excel表格的时候&#xff0c;本地运行导出没问题&#xff0c;但是发布到服务器后提示 “java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader” 下面是pom.xml中的配置 <dependency><groupId>org.apache.poi</groupId><art…

JVM工作原理与实战(二十一):内存管理

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、不同语言的内存管理 1.C/C的内存管理 2.Java的内存管理 二、垃圾回收的对比 1.自动垃圾回收与手动垃圾回收的对比 2.优点与缺点 总结 前言 JVM作为Java程序的运行环境&#…

Cacti 前台SQL注入漏洞复现(CVE-2023-39361)

0x01 产品简介 Cacti 是一套基于 PHP,MySQL,SNMP 及 RRDTool 开发的网络流量监测图形分析工具。 0x02 漏洞概述 该漏洞存在于graph_view.php文件中。默认情况下,访客用户无需身份验证即可访问graph_view.php,在启用情况下使用时会导致SQL注入漏洞。 攻击者可能利用此漏洞…

运算符(java)

隐式转换&#xff1a;byte<short<int<long<float<double 取值范围小的和取值范围大的进行运算&#xff0c;小的会提升为大的&#xff0c;再进行运算 byte,short,char三种类型的数据在进行运算的时候&#xff0c;会直接先提升为int&#xff0c;然后再进行计算 …

自然语言处理(Natural Language Processing,NLP)解密

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

【前后端分离与不分离的区别】

Web 应用的开发主要有两种模式&#xff1a; 前后端不分离 前后端分离 理解它们的区别有助于我们进行对应产品的测试工作。 前后端不分离 在早期&#xff0c;Web 应用开发主要采用前后端不分离的方式&#xff0c;它是以后端直接渲染模板完成响应为主的一种开发模式。以前后端不…

《WebKit 技术内幕》之五(2): HTML解释器和DOM 模型

2.HTML 解释器 2.1 解释过程 HTML 解释器的工作就是将网络或者本地磁盘获取的 HTML 网页和资源从字节流解释成 DOM 树结构。 这一过程中&#xff0c;WebKit 内部对网页内容在各个阶段的结构表示。 WebKit 中这一过程如下&#xff1a;首先是字节流&#xff0c;经过解码之…

MATLAB聚类工具箱

本文借鉴了数学建模清风老师的课件与思路&#xff0c;可以点击查看链接查看清风老师视频讲解&#xff1a;【1】MATLAB聚类工具箱&#xff1a;提前预览工具箱的核心功能_哔哩哔哩_bilibili 关于工具箱的获取&#xff0c;在数学建模学习交流公众号里发送&#xff1a; 567891 %% …

日志记录logging

文章目录 1. logging基础使用1.1 日志的6个级别1.2 logging.basicConfig1.3 案例 2. logging的高级应用2.1 记录器Logger2.2 处理器- Handler2.3 格式器- Formatter2.4 创建关联2.4 案例 3.在项目中的应用3.1 定义全局使用的logger对象3.2 使用案例 参考 1. logging基础使用 1…

Wpf 使用 Prism 实战开发Day13

配置 AutoMapper 关系映射 在上一节 ToDoController 控制器&#xff0c;或 IToDoService 服务接口中&#xff0c;方法的传参都是直接传的实体类。但在实际开发过程中&#xff0c;这样是不允许的。标准且规范的做法是&#xff0c;定义一个数据传输层&#xff0c;即Dto层。 一.在…

荣誉艾尔迪亚人的题解

目录 原题描述&#xff1a; 题目背景 题目描述 输入格式 输出格式 样例 Input 1 Output 1 Input 2 Output 2 数据范围&#xff1a; 样例解释 主要思路&#xff1a; 代码code&#xff1a; 原题描述&#xff1a; 时间限制: 1000ms 空间限制: 65536kb 题目背景 ​…