zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    微信支付
    设计模式
    微信,根据经纬度获取当前城市
    移动端下拉刷新
    angular-seed — AngularJS种子项目
    Send Email
    angularjs 控制器
    ajax 图片上传
    Jpeg-Baseline和Progressive JPEG的区别
    QT启动一个工程
  • 原文地址:https://www.cnblogs.com/alimayun/p/11204457.html
Copyright © 2011-2022 走看看