springboot核心技术-----Docker数据访问自定义starter
Posted 阿里-马云的学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot核心技术-----Docker数据访问自定义starter相关的知识,希望对你有一定的参考价值。
Docker
1、简介
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使 用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。
2、核心概念
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
3、安装Docker
1)、安装linux虚拟机
1)、VMWare、VirtualBox(安装);
2)、导入虚拟机文件centos7-atguigu.ova;
3)、双击启动linux虚拟机;使用 root/ 123456登陆
4)、使用客户端连接linux服务器进行命令操作;
5)、设置虚拟机网络; 桥接网络=选好网卡==接入网线;
6)、设置好网络以后使用命令重启虚拟机的网络
service network restart
7)、查看linux的ip地址
ip addr
8)、使用客户端连接linux;
2)、在linux虚拟机上安装docker
步骤:
4、Docker常用命令&操作
1)、镜像操作
2)、容器操作
软件镜像(QQ安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的QQ);
步骤:
3)、安装mysql示例
docker pull mysql
错误的启动
正确的启动
做了端口映射
几个其他的高级操作
SpringBoot与数据访问
1、JDBC
效果:
默认是用org.apache.tomcat.jdbc.pool.DataSource作为数据源;
数据源的相关配置都在DataSourceProperties里面;
自动配置原理:
org.springframework.boot.autoconfigure.jdbc:
1、参考DataSourceConfiguration,根据配置创建数据源,默认使用Tomcat连接池(springboot 2.x版本已更换号称世界最快的数据源-----hikariCP了);可以使用spring.datasource.type指定自定义的数据源类型;
2、SpringBoot默认可以支持;
3、自定义数据源类型
4、DataSourceInitializer:ApplicationListener;
作用:
1)、runSchemaScripts();运行建表语句;
2)、runDataScripts();运行插入数据的sql语句;
默认只需要将文件命名为:
5、操作数据库:自动配置了JdbcTemplate操作数据库
2、整合Druid数据源
配置好之后进入druid管理后台-----http://ip:port/druid
3、整合MyBatis
步骤:
1)、配置数据源相关属性(见上一节Druid)
2)、给数据库建表
3)、创建JavaBean
4)、注解版
问题:
自定义MyBatis的配置规则;给容器中添加一个ConfigurationCustomizer;
5)、配置文件版
4、整合SpringData JPA
1)、SpringData简介
2)、整合SpringData JPA
JPA:ORM(Object Relational Mapping);
1)、编写一个实体类(bean)和数据表进行映射,并且配置好映射关系;
2)、编写一个Dao接口来操作实体类对应的数据表(Repository)
3)、基本的配置JpaProperties
启动配置原理
几个重要的事件回调机制
配置在META-INF/spring.factories
ApplicationContextInitializer
SpringApplicationRunListener
只需要放在ioc容器中
ApplicationRunner
CommandLineRunner
启动流程:
1、创建SpringApplication对象
2、运行run方法
3、事件监听机制
配置在META-INF/spring.factories
ApplicationContextInitializer
SpringApplicationRunListener
配置(META-INF/spring.factories)
只需要放在ioc容器中
ApplicationRunner
CommandLineRunner
自定义starter
starter:
1、这个场景需要使用到的依赖是什么?
2、如何编写自动配置
3、模式:
启动器只用来做依赖导入;
专门来写一个自动配置模块;
启动器依赖自动配置;别人只需要引入启动器(starter)
mybatis-spring-boot-starter;自定义启动器名-spring-boot-starter
步骤:
1)、启动器模块
2)、自动配置模块
3)、属性配置类
4)服务类-----具体做啥操作的类
5)、自动配置类
- @ConditionalOnClass:当类路径classpath下有指定的类的情况下进行自动配置
- @ConditionalOnMissingBean:当容器(Spring Context)中没有指定Bean的情况下进行自动配置
- @ConditionalOnProperty(prefix = “example.service”, value = “enabled”, matchIfMissing = true),当配置文件中example.service.enabled=true时进行自动配置,如果没有设置此值就默认使用matchIfMissing对应的值
- @ConditionalOnMissingBean,当Spring Context中不存在该Bean时。
- @ConditionalOnBean:当容器(Spring Context)中有指定的Bean的条件下
- @ConditionalOnMissingClass:当类路径下没有指定的类的条件下
- @ConditionalOnExpression:基于SpEL表达式作为判断条件
- @ConditionalOnJava:基于JVM版本作为判断条件
- @ConditionalOnJndi:在JNDI存在的条件下查找指定的位置
- @ConditionalOnNotWebApplication:当前项目不是Web项目的条件下
- @ConditionalOnWebApplication:当前项目是Web项目的条件下
- @ConditionalOnResource:类路径下是否有指定的资源
- @ConditionalOnSingleCandidate:当指定的Bean在容器中只有一个,或者在有多个Bean的情况下,用来指定首选的Bean
6)、自动配置类生效
新建src/main/resources/META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.atguigu.starter.HelloServiceAutoConfiguration
7)、install
然后将atguigu-spring-boot-starter、atguigu-spring-boot-starter-autoconfigurer分别install到本地仓库中
8)、测试-----新建一个工程,然后导入atguigu-spring-boot-starter依赖
a、application.properties
b、controller
以上是关于springboot核心技术-----Docker数据访问自定义starter的主要内容,如果未能解决你的问题,请参考以下文章