1-3. SpringBoot基础,Java配置(全注解配置)取代xml配置
最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。
这节讲一下SpringBoot的学习必须的一些基础,Java配置。其实在Spring2.0时代就已经有注解配置了,但是开发人员还是喜欢注解和xml混合配置,当SpringBoot出来后,这个全注解配置,即Java配置就成为主流。
讲一个例子
在SpringMVC+Spring+Mybatis框架整合时,必须注入IOC容器的时一个数据库连接池,因此做过SSM架构搭建的人都知道要配置以下
<!-- 配置连接池 -->
<bean id="dataSource" class="com.alibab.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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
在SpringBoot中如何通过Java配置把其中注入呢(这边只是讲个例子,SpringBoot有整合了Mybatis依赖,因此不需要我们自己注入,不过大家可以通过这个例子来进行注入一些SpringBoot没提供的整合依赖包)
比较常用的注解有下面有:
@Configuration:声明一个类作为配置类,代替xml文件
@Bean : 声明在方法上,其返回值注入到Bean容器中,默认id为方法名
@Value : 属性注入
@Property:指定外部属性文件
导入Druid的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
如果Spring2.0学过注解配置的话,其实通过这些就可配置了,编写一个JdbcConfig类
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@Value("{#jdbc.driverClassName}")
private String driverClassName;
@Value("{#jdbc.url}")
private String url;
@Value("{#jdbc.username}")
private String username;
@Value("{#jdbc.password}")
private String password;
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
编写一个jdbc.properties文件
这边只是测试注入,因此没必要真的链接数据库,只有看到注入成功就行,在测试类中测试注入情况。通过打断点debu运行,发现注入成功。
SpringBoo提供了更加优雅的配置,SpringBoot的核心配置文件application.properties
因此删去jdbc.properties,在application.properties在添加相应的内容
修改jdbcConfig类,使用 @ConfigurationProperties注解
@Configuration
//@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
return new DruidDataSource();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
再次测试也成功,是不是特别简单的注入。
该项目源码已放在GitHub上,地址是
https://github.com/mingweihua/ming/tree/main/ming-base
博主的坚持 离不开大家关注、评论和点赞,感谢大家支持。护发路上互相扶持!!!
原文章:https://blog.csdn.net/dogHuaMing/article/details/112058153
1-3. SpringBoot基础,Java配置(全注解配置)取代xml配置的更多相关文章
- Bean XML 配置(1)- 通过XML配置加载Bean
系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Contro ...
- 基于已构建S2SH项目配置全注解方式简化配置文件
如果还不熟悉s2sh项目搭建的朋友可以先阅读 eclipse环境下基于tomcat-7.0.82构建struts2项目 eclipse环境下基于已构建struts2项目整合spring+hiberna ...
- 【1】springmvc4 + servlet3 零配置全注解入门项目helloword
自从servlet3.0支持注解,使得javaweb项目使用全注解成为可能. 注解化将成为javaweb的发展方向.包括spring去年推出的spring-boot也是全部使用注解. 代码:https ...
- Spring 中的事务操作、注解、以及 XML 配置
事务 事务全称叫数据库事务,是数据库并发控制时的基本单位,它是一个操作集合,这些操作要么不执行,要么都执行,不可分割.例如我们的转账这个业务,就需要进行数据库事务的处理. 转账中至少会涉及到两条 SQ ...
- 死磕Spring之AOP篇 - Spring AOP注解驱动与XML配置
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...
- spring注解机制和XML配置机制之间的比较
XML配置的优缺点: 优点有:1. XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新编译.2. 在处理大的业务量的时候,用XML配置应该更加好一 ...
- Java DB 访问之 mybatis mapper xml 配置方式
1 项目说明 项目采用 maven 组织 ,jdbc 唯一的依赖就是 mysql-connector-java pom 依赖如下: mysql 数据连接 : mysql-connector-java ...
- (D)spring boot使用注解类代替xml配置实例化bean
bean经常需要被实例化,最常见的就是new一个呗,Bean bean = new Bean(),方便好用还快捷. 然而在我们刚开始学习写i项目的时候却发现,new不好用哦,并且也不报错,根本不知道怎 ...
- SSH注解方式与XML配置方式对照表
一.Hibernate 1.一对多注解 2.单表注解 二.Struts2 Struts2注解 三.Spring 1.IOC注解 2.AOP注解
随机推荐
- Windows核心编程笔记之内核对象
0x01 子进程继承父进程内核对象句柄 父进程 #include <Windows.h> #include <iostream> #include <strsafe.h& ...
- Win64 驱动内核编程-21.DKOM隐藏和保护进程
DKOM隐藏和保护进程 主要就是操作链表,以及修改节点内容. DKOM 隐藏进程和保护进程的本质是操作 EPROCESS 结构体,不同的系统用的时候注意查下相关定义,确定下偏移,下面的数据是以win7 ...
- [CTF]跳舞的小人
[CTF]跳舞的小人 来自夏洛克福尔摩斯在<归来记>中侦探案件使用的一种加密方式. 对应的明文是 AT ELRIGES (住在埃尔里奇) COME ELSIE (来吧 埃尔茜) NEVER ...
- 数据库导入时出现“2006 - MySQL server has gone away”问题的解决(windows)
1.查到文件my.ini,在文件最后([mysqld]段最后),修改"max_allowed_packet = 50M",添加"interactive_timeout = ...
- 附近的人?你zao吗?
前几天收到一个新的需求,需要实现类似"附近的人"的功能:根据自己当前的定位,获取距离范围内的所有任务地点.刚看到这个需求时有点懵逼,第一想到的就是要利用地球的半径公式去计算距离,也 ...
- 使用C#进行数据库增删改查ADO.NET(一)
这节讲一下如何使用C#进行数据库的增删改查操作,本节以SQL Server数据库为例. .NET 平台,使用ADO.NET 作为与数据库服务器的桥梁,我们通过ADO.NET就可以使用C#语言操作数据库 ...
- Asp.NetCore 自定义中间件
这节演示一下自定义中间件,第一节我们讲到,中间件的处理流程就像一个俄罗斯套娃,那这种俄罗斯套娃型的流程内部是如何实现的呢,下面请看代码. 第一种写法是直接写在Configure方法中的,使用app ...
- Redis学习笔记六:持久化实验(AOF,RDB)
作者:Grey 原文地址:Redis学习笔记六:持久化实验(AOF,RDB) Redis几种持久化方案介绍和对比 AOF方式:https://blog.csdn.net/ctwctw/article/ ...
- 并发王者课 - 青铜 2:峡谷笔记 - 简单认识Java中的线程
在前面的<兵分三路:如何创建多线程>文章中,我们已经通过Thread和Runnable直观地了解如何在Java中创建一个线程,相信你已经有了一定的体感.在本篇文章中,我们将基于前面的示例代 ...
- [DB] mysql windows 安装
参考 mysql安装 https://www.cnblogs.com/zhangkanghui/p/9613844.html navicat for mysql 中文破解版(无需激活码) https: ...