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的主要内容,如果未能解决你的问题,请参考以下文章

云原生时代必须具备的核心技能之Docker高级篇(Docker实战之SpringBoot项目部署)

万字总结!dockerpull本地

万字总结!dockerpull本地

总结一下,java多态底层原理

SpringBoot与docker

docker运行mysql优势,成功拿下大厂offer