跳至主要內容
SpringBoot-应用篇-多数据源操作数据库

构建环境

  • Mybatis-plus
  • Druid 数据库连接池
  • dynamic-datasource

数据表构建

​ 分别向两个数据库中创建相同的数据表user(或者根据不同的情况创建不同结构的数据表),并插入数据

# 分别向数据库db_test_01、db_test_02 创建数据表

-- ----------------------------
-- User 表结构
-- ----------------------------
CREATE TABLE `user`  (
  `user_id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `user_name` varchar(30)  NOT NULL COMMENT '用户账号',
  `nick_name` varchar(30)  NOT NULL COMMENT '用户昵称',
  `email` varchar(50)  NULL DEFAULT '' COMMENT '用户邮箱',
  `password` varchar(100)  NULL DEFAULT '' COMMENT '密码',
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 COMMENT = '用户信息表' ROW_FORMAT = Dynamic;



# 插入数据
-- ----------------------------
-- 数据库 db_test_01 插入记录
-- ----------------------------
INSERT INTO `user` VALUES (100, 'wangwu', '王五', 'wangwu@qq.com', '123456');
INSERT INTO `user` VALUES (101, 'zhaoliu', '赵六', 'zhaoliu@qq.com', '123456');

-- ----------------------------
-- 数据库 db_test_02 插入记录
-- ----------------------------
INSERT INTO `user` VALUES (100, 'zhangsan', '张三', 'zhangsan@qq.com', '123456');
INSERT INTO `user` VALUES (101, 'lisi', '李四', 'lisi@qq.com', '123456');

holic-x...大约 4 分钟JAVA框架
MyBatis-SQL注入

学习核心

  • SQL注入问题
  • MyBatis如何避免SQL注入

学习资料

SQL注入

​ MyBatis提供了两种方式实现DAO层,一种是直接通过注解形式在接口方法中定义SQL,另一种则是通过XML定义方式(动态SQL)

​ SQL注入则指的是在一些拼接SQL的场景,攻击者利用程序漏洞恶意将一些自定义的SQL指令提交到后台执行,进而触发一些非开发者意图的数据库操作。这种情况一般是因为数据交互的时候前端没有对传入的数据做严格校验,误将一些数据动态拼接到SQL语句中执行,从而导致数据库受损(被脱库、被删除、甚至整个服务器被攻击等)


holic-x...大约 4 分钟JAVA框架
MyBatis-设计模式

学习核心

  • MyBatis的设计模式

学习资料

MyBatis中的设计模式

设计模式(MyBatis3.5.5版本

【1】SqlSessionFactory:工厂模式

【2】SqlSessionFactoryBuilder:建造者模式

【3】ErrorContext:单例模式


holic-x...大约 8 分钟JAVA框架
SpringBoot-常用注解

学习核心

  • Springboot常用注解

学习资料

Springboot常用注解

​ 在Springboot自动装配和启动流程原理分析中对注解进行了拆解和分析,此处针对常用注解做核心汇总

注解 说明
@SpringBootApplication 核心注解,作用于Spring Boot主类,标识这是一个 Spring Boot 应用,用于开启Springboot的各项能力
其是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合
@EnableAutoConfiguration 允许 Spring Boot 自动配置注解
开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean
其核心在于AutoConfigurationImportSelector:实现自动加载、去重、过滤
@Configuration 用于定义配置类,指出该类是 Bean 配置的信息源
类似传统的xml配置文件,一般加在主类上
@ComponentScan 组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文
@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中
@Profiles Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效
任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机
@ConfigurationProperties 配置属性注解(可以理解为将xml配置和实体进行绑定),在自定义Starter中会用到
Spring框架相关注解 (Spring框架中有说明)
@Repository 分层:用于修饰数据访问层组件
@Service 分层:用于修饰Service业务层组件
@RestController 分层:用于修饰Controller控制器层组件(rest风格:等价于@Controller+@ResponseBody组合)
@ResponseBody 用于返回JSON数据结果(搭配@RequestMapping 路径映射配置注解使用)
@Component 通用组件定义
@Bean Bean对象定义,相当于XML中的<bean></bean>
放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理
@AutoWired 优先byType方式注入
@Qualifier 当有多个同一类型的Bean时,可以用@Qualifier("name")来指定。与@Autowired配合使用
@Resource(name="name",type="type") 默认优先byName方式注入(根据name、type的配置与否会限定注入方式)
@RequestMapping 处理请求地址映射的注解
@RequestParam 处理请求URL的参数并封装到方法参数(XXX?param=xxx)以?后带的参数形式
@PathVariable 处理请求URL的参数并封装到方法参数(XXX/{param})以占位符的形式

holic-x...大约 3 分钟JAVA框架
SpringBoot-SpringSPI机制

学习核心

  • Java的SPI机制(复习)
  • SpringbootSPI机制

学习资料

SPI机制

​ 首先对Java的SPI机制进行复盘,在理解的基础上再去拆解Springboot的SPI机制原理(其实在解析Springboot自动装配和启动流程的时候就已经涉及到这块的内容)

​ SPI(Service Provider Interface)是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要用于框架中开发,例如Dubbo、Spring、Common-Logging,JDBC等采用采用SPI机制,针对同一接口采用不同的实现提供给不同的用户,从而提高了框架的扩展性


holic-x...大约 6 分钟JAVA框架
SpringBoot-模式注解

学习核心

  • 模式注解概念核心和场景应用

学习资料

模式注解概念核心

​ Spring 框架中有很多可用的注解,其中有一类注解称模式注解(Stereotype Annotations),包括 @Component@Service@Controller@Repository 等。只要在相应的类上标注这些注解,并配置开启自动扫描(如在 XML 中配置 <context:component-scan base-package="xxx.xxx.xx"/> 或使用注解 @ComponentScan),就能成为 Spring 中组件(Bean)


holic-x...大约 2 分钟JAVA框架