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

原文地址:https://www.cnblogs.com/alimayun/p/11204457.html

时间: 2024-08-28 02:47:54

springboot核心技术(四)-----Docker、数据访问、自定义starter的相关文章

docker 运行jenkins及vue项目与springboot项目(四.docker运行nginx)

docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四.docker运行nginx 五.jenkins打包springboot服务且在docker中运行 准备配置 创建 /home/jenkins/docker/nginx/nginx.conf 文件及/home/docker/nginx/log文件夹 其nginx.conf 文件为在原nginx.co

C#入门经典(v6) 读书笔记 (第四部分 数据访问)

第21章 文件系统数据 stream 流 serial device 序列化设备 compression 压缩 truncate 截断 CSV(Comma-Separated Values,逗号分隔值) obsolete 过时的 文件路径: string directory = Directory.GetCurrentDirectory();//获取应用程序当前工作目录 string path1 = @"c:\NewProject\bin\Debug\LogFile.txt";//绝对

SpringBoot - 05. 数据访问之JDBC(源码分析+代码下载)

10分钟进阶SpringBoot - 05. 数据访问之JDBC github代码下载 一.JDBC是什么? JDBC API 属于Java APIJDBC用于以下几种功能:连接到数据库.执行SQL语句 二.Spring Boot中如何使用JDBC 2.1 创建 Spring Boot Project 时引入 JDBC API 依赖和 MySQL Driver依赖,以及Spring Web依赖(测试时用到) 可以在POM中找到引入的JDBC依赖和mysql依赖: JDBC 依赖: <depend

coreseek 自定义词库(四)数据过滤

条件过滤在列表中是常用的功能,使用mysql数据库和sphinx进行搜索需要安装sphinx引擎 mysql命令行中, show engine sphinx states; 可以查看是否有  sphinxex引擎,如果没有则需要安装,否则无法使用这样的语句: select * from documents where group_id = 2 and query='@title 测试;mode=extended'; 安装sphinx引擎大家可以参考: http://blog.zhuyin.org

java中内部类的创建四种情况,三种方式,及内部数据访问权限

内部类和外部类的关系,及内部静态类的数据访问权限,声明方式. 第一种,在外部类内部声明使用内部类,内部类的类型为static和非 static类型,内部类数据类型为private,protected,public 类型的访问权限.外部类为非静态声明和权限如下: package com; public class Test1 { //@author 张春蕾 private class Name{ private int i =1; public int s = 2; protected int m

SpringBoot 之数据访问

1. Spring Boot 与 JDBC 默认使用 org.apache.tomcat.jdbc.pool.DataSource 数据源; // application.yml spring: datasource: username: root password: root url: jdbc:mysql:///jpa driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource #

SpringBoot与数据访问

1.JDBC <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-j

SpringBoot实战(四)之使用JDBC和Spring访问数据库

这里演示的是h2databse示例,所以简单的介绍普及下h2database相关知识 H2数据库是一个开源的关系型数据库. H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容.它还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便. H2数据库特点: 短小精干. Java编写,可使用GCJ和IKVM.NET编译. 同时支持网络版和嵌入式版本,另外还提供了内存版. 有比较好的兼容性,支持相当

Docker数据及网络管理

一.数据管理 1. 挂载本地的目录到容器里 [[email protected] ~]# docker run -tid -v /data/:/data centos bash 0f1093aadf6ec85224520a303f92282d12443ecf0305bbf15eb2f3526fd55212 [[email protected] ~]# docker exec -it 0f10 bash [[email protected] /]# df -h Filesystem