第一课 SpringBoot微信点餐系统课程介绍和环境搭建

第一课 SpringBoot微信点餐系统课程介绍和环境搭建

tags:

  • Java
  • 慕课网

categories:

  • 环境搭建
  • 日志框架

第一节 项目介绍

1.1 项目设计

  1. 功能模块划分
  2. 角色划分
  3. 部署架构
  4. 数据库设计

1.2 角色划分

  1. 买家(手机端)
  2. 卖家(PC端)

1.3 功能模块

在这里插入图片描述
在这里插入图片描述

1.4 部署架构

  1. 这里支持分布式部署。图上tomate 是多台服务器
    在这里插入图片描述

  2. 系统的演进过程
    在这里插入图片描述

  3. 微服务的两大门派。

    • 阿里系: Dubbo做服务化治理,Zookeeper做服务注册中心 , SpringMVC或SpringBoot
    • Spring Cloud栈:Spring Cloud,Netflix Eureka, SpringBoot

第二节 环境搭建

2.1 编辑器IDEA

  1. Idea官网下载:https://www.jetbrains.com/zh-cn/idea/download/other.html
  2. 旗舰版本Ultimate 2017.1.6 并破解。
# 课程环境安装在centos7.3上 用这三个破解 http://lookdiv.com/index/index/indexcodeindex.html
http://idea.iteblog.com/key.php
http://intellij.mandroid.cn/
http://idea.imsxm.com/

# 创建桌面快捷方式
cd 桌面
touch idea.desktop
vi idea.desktop

# 写入
[Desktop Entry]
Name=idea
Exec=/home/qnhyn/idea/bin/idea.sh %u
Type=Application
Icon=/home/qnhyn/idea/bin/idea.png
Terminal=false

2.2 JDK环境配置

  1. jdk 1.8.0_111 安装路径/usr/local/jdk1.8.0_111
# 1. 安装jdk 删除系统自带jdk 一句删除和多次删除
rpm -qa | grep java
rpm -e --nodeps `rpm -qa | grep java`
# noarch文件可以不用删除 
javapackages-tools-3.4.1-11.el7.noarch
tzdata-java-2020a-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
# 其他的都删了
su root
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-0.el7_8.x86_64
# 查看是否删除成功
java -version
# 直接 搜jdk-8u111-linux-x64.tar.gz下载 官网下载
tar -zvxf jdk-8u111-linux-x64.tar.gz -C /usr/local
# 设置环境变量
vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_111
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

# 使其生效
source /etc/profile
java -version

2.3 nginx环境配置

  1. nginx 1.11.7 安装路径/usr/local/nginx 重启nginx -s reload
# 1. 安装nginx 先安装依赖
yum install -y gcc gcc-c++ autoconf automake
yum install -y zlib zlib-devel openssl openssl-devel pcre-devel

wget http://nginx.org/download/nginx-1.11.7.tar.gz
tar -zxvf nginx-1.11.7.tar.gz -C /usr/local && cd /usr/local/nginx-1.11.7/
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module
make && make install

# 开启端口服务
firewall-cmd  --permanent --zone=public --add-service=http
firewall-cmd  --reload

# 验证,在浏览器中数据, 看到Nginx欢迎页面。
http://IP/
/usr/local/nginx/nginx -s reload # 重启
/usr/local/nginx/nginx # 启动
/usr/local/nginx/nginx -s stop # 停止

2.4 mysql环境配置

  1. mysql 5.7.17
  • 配置/etc/my.conf
  • 账号:root 密码:123456
  • 端口:3306 启动:systemctl start mysqld
# 安装mysql
# 官网下载 mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
# 创建mysql的用户和组
useradd  mysql
tar -zvxf  mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
mv mysql-5.7.17-linux-glibc2.5-x86_64/ mysql
chown -R  mysql:mysql /usr/local/mysql/
# 这里会生成默认密码  W>zJE,yS7%Ii
cd /usr/local/mysql
./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

# 否覆盖系统的 /etc/my.cnf 原文件,输入:y
ln -s /usr/local/mysql/bin/mysql   /usr/bin/mysql
cp  /usr/local/mysql/support-files/my-default.cnf   /etc/my.cnf
cp  /usr/local/mysql/support-files/mysql.server     /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld

# vim /etc/my.cnf 注释掉最下面的
# sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
cd /usr/local/mysql/ && ./support-files/mysql.server start
chkconfig --add mysqld
chkconfig mysqld on

# 修改密码
mysql -uroot -p
SET PASSWORD = PASSWORD('123456');
# MySQL 远程授权 all privileges 全部权限,GRANT 可以立刻生效,创建了一个账户名为 root , 密码 123456,% 表示所有的 ip都可以访问读取数据库的账号
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;
quit;

# 在CentOS7中安装mysql可视化操作workbench
wget http://repo.mysql.com/yum/mysql-tools-community/el/7/x86_64/mysql-workbench-community-6.2.5-1.el7.x86_64.rpm
sudo yum install rpm mysql-workbench-community-6.2.5-1.el7.x86_64.rpm
sudo yum install tinyxml

2.5 redis环境配置

  1. redis 3.2.8
  • 路径: /usr/local/redis
  • 配置: /etc/redis.conf
  • 端口:6379 密码:123456
  • 启动: systemctl start redis
# 安装redis-3.2.8
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -zxvf redis-3.2.8.tar.gz -C /usr/local
cd redis-3.2.8
make
make install
# 配置Redis 默认也行 
./utils/install_server.sh
# 查看开机启动
chkconfig --list
# Redis服务查看
ps -ef | grep redis
# redis基本操作
/etc/init.d/redis_6379 restart

2.5 MEAVN环境配置

  1. Meavn 3.3.9
mkdir /usr/local/maven && cd /usr/local/maven
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -zxvf apache-maven-3.3.9-bin.tar.gz
mv apache-maven-3.3.9 maven
vi /etc/profile
# 在/etc/profile的文件末尾添加以下配置:
export M2_HOME=/usr/local/maven/maven
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH
source /etc/profile
# mvn -version验证命令是否有效
mvn -version
# 修改成阿里云地址 sudo vi /usr/local/maven/maven/conf/settings.xml 搜mirror
   <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

第三节 创建项目和选择日志框架

3.1 项目初始化

  1. 然后直接先只选上Web就行。
    在这里插入图片描述

在这里插入图片描述

  1. 进入工程右键运行。

3.2 日志框架选择

  1. 日志框架是一套能实现日志输出的工具包
  2. 它能够描述系统运行状态的所有时间都可以算作日志
    • 数据库崩溃
    • 用户下线
    • 接口超时
  3. 日志框架的能力
    • 定制输出目标
    • 定制输出格式
    • 携带上下文信息
    • 运行时选择性输出
    • 灵活的配置
    • 优异的性能
  4. 常见的日志框架如下:
    在这里插入图片描述

5 这里选择:SLF4j + Logback配合
- JUL虽然来自官方但是太过简陋,所以不用
- jboss-logging 自诞生之初就不是为了服务大众很快就被淘汰了
- Log4j作者写了Log4j2和Logback和SLF4j, 因为作者觉得Log4j太烂所以开发了Logback(它才是实际意义上的Log4j2)。
- Log4j2 apache只是借了一个名字来用,它太优秀和太先进,有过度设计的嫌疑,很多情况下对框架支持程度不好。容易采坑。它优于Logback在于它的超高性能,而我们大概率用不上。
- 因为SLF4j和Logback同一个作者。所以选择SLF4j和Logback

3.3 日志框架使用

  1. test.java.com.qnhyn.sell下新建一个LoggerTest类进行测试。右键运行test1函数。
  2. 级别在info之下的其实不会输出。这里一定要传入当前类LoggerTest.class,如果传入其他类,报错在其他类上,过去找,你能找个毛?
  3. 普通写法如下。每次写都得绑定到自身类上,很麻烦
    在这里插入图片描述
package com.qnhyn.sell;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class LoggerTest {
    private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

    @Test
    public void test1(){
        logger.debug("debug...");
        logger.info("info...");
        logger.error("error...");
    }
}
  1. 注解写法如下。首先在idea中settings中安装Lombok插件。在pom文件加入lombok的依赖( )
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
    <version>1.16.16</version>
</dependency>
  1. 写法比之前方便很多,log
package com.qnhyn.sell;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LoggerTest {
    @Test
    public void test1(){ 
        log.debug("debug...");
        String name = "imooc" ;
        String password = "123456";
        // 这种变量输出不够友好 多了头疼
        log.info("name: " + name + " ,password: " + password);
        // 占位符方式输出 简单方便
        log.info( "name: {}, password:{} ", name, password);
        log.info("info...");
        log.error("error...");
    }
}

3.4 Logback的配置

  1. Logback的配置分为两种:
    • application.yml 这种方法相对比较简单,只能配置日志的路径日志输出格式等简单配置
    • logback-spring.xml 可以进行复杂配置。比如:区分info和error配置每天产生日志文件
  2. application.yml 配置
    • pattern.console 置日志输出的格式。%d日期 %msg信息 %n换行
    • pattern.level 置日志输出的级别
    • file.name 指定日志输出的地址名称
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1/sell?characterEncoding=utf-8&useSSL=false
    jpa:
      show-sql: true
server:
  context-path: /sell
logging:
  # 日志输出格式配置
  pattern:
    console: "%d - %msg%n"
    level: debug
  # 日志输出目录配置 默认输出spring.log
#  file:
#    path: /home/qnhyn/log
# 日志输出为文件sell.log
  file:
    name: /home/qnhyn/log/sell.log
  debug:
    # 指定某个类类的日志级别
    # com.imooc.LoggerTest: debug
  1. logback-spring.xml 日志配置。先把上面日志配置给删除或者屏蔽掉
    • 配置项用在root下(整个项目都适用),ref=“consoleLog” 指向的是上面的名字
    • 具体配置说明如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %d - %msg%n
            </pattern>
        </layout>
    </appender>

    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--如果根据范围过滤掉ThresholdFilter其他级别日志 因为info级别比较低 以上级别都会打出来-->
        <!--这里设置过滤级别LevelFilter-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--如果匹配到禁止掉, 没有匹配到-->
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略 imeBasedRollingPolicy每天输出成一个文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--路径, 这里注意要提前创建目录并给权限 sudo chmod -R 777 /home/qnhyn/logout/sell/-->
            <fileNamePattern>
                /home/qnhyn/logout/sell/info.%d.log
            </fileNamePattern>
        </rollingPolicy>
    </appender>

    <!--让错误日志修改到另外的目录中-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--根据范围过滤掉其他级别日志 这里error级别比较高所以可以这么配-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径, 这里注意要提前创建目录并给权限 sudo chmod -R 777 /home/qnhyn/logout/sell/-->
            <fileNamePattern>
                /home/qnhyn/logout/sell/error.%d.log
            </fileNamePattern>
        </rollingPolicy>
    </appender>

    <root level="info">
        <!--指定使用的日志配置-->
        <appender-ref ref="consoleLog" />
        <appender-ref ref="fileInfoLog" />
        <appender-ref ref="fileErrorLog" />
    </root>
</configuration>
  1. 可以自己看一下springboot的默认日志配置
    • spring-boot/2.3.5.RELEASE/spring-boot-2.3.5.RELEASE.jar!/org/springframework/boot/logging/logback/base.xml
    • spring-boot/2.3.5.RELEASE/spring-boot-2.3.5.RELEASE.jar!/org/springframework/boot/logging/logback/default.xml
    • spring-boot/2.3.5.RELEASE/spring-boot-2.3.5.RELEASE.jar!/org/springframework/boot/logging/logback/console-appender.xml
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值