网站建设整改报告企业门户网站的设计 流程图
目录
回顾spring
优点
缺点
springBoot概述
springBoot特点
起步依赖
自动配置
springBoot开发环境构建
1、创建一个普通的maven项目
2、配置pom.xml文件
3、创建基本包目录,创建启动类
4、创建自定义的处理器
5、访问
springBoot配置文件
1、属性文件 .propertie
2、yml
springBoot数据访问管理(jdbc,mybatis,阿里数据源)
jdbc
阿里巴巴数据源
myabtis
springBoot注解
springBoot集成日志功能(了解)
常用日志组件
AOP项目中统一打印
springBoot统一异常处理
回顾spring
spring是一个轻量级的,IOC(控制反转)和AOP(面向切面)的一站式框架。为简化企业级的应用开发应运而生。
优点
轻量级
IOC:由框架创建管理对象。
AOP:可以将业务代码和非业务代码分离。
解耦性:降低了代码之间的耦合度,IOC和AOP就是最好的体现。
一站式:对数据访问层中数据连接对象管理,mybatis,事务;对web层的servlet进行封装。
开源
很方便的集成其他的框架。
缺点
1、配置是重量级的,而且大量使用模板化配置
<!--属于很啰嗦的模板化配置-->
<!--开启aop的自动代理-->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy><!-- 开启注解事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/><!--开启web层的注解-->
<mvc:annotation-driven></mvc:annotation-driven>
2、项目中需要导入很多相关的依赖坐标(例如json组件,跨域过滤器......)
springBoot概述
springBoot是在spring的基础上对spring应用的搭建进行简化,
基于约定大于配置的思想(大家公认的做法,那么框架也就默认把一些功能直接实现了,例如我们现在都用注解开发)
springBoot特点
可以创建一个企业级应用程序,而且内嵌服务器(tomcat)。
有两大核心功能:
起步依赖
当我们使用spring基本的依赖时,自动的就会将相关的依赖导入进来。
自动配置
在spring启动时他可以根据我们项目中配置的相关依赖,自动加载配置。
springBoot开发环境构建
1、创建一个普通的maven项目
2、配置pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>news</artifactId><version>1.0-SNAPSHOT</version><!--依赖的父级工程--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.6</version><relativePath/></parent><!--指定 jdk 版本--><properties><java.version>1.8</java.version></properties><!--添加基本的 springweb 依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><!--打包插件--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.6.6</version></plugin></plugins></build></project>
3、创建基本包目录,创建启动类
package com.ffyc.news;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication//是springBoot中最核心的注解
public class NewsApplication {public static void main(String[] args) {SpringApplication.run(NewsApplication.class);}
}
4、创建自定义的处理器
@RestController
@RequestMapping(path = "/loginCtl")
public class LoginController {@RequestMapping(path = "/login")public String login(){System.out.println("aaaaaaaa");return "success";}
}
5、访问
ip:端口/地址/方法地址
springBoot配置文件
springBoot中的配置文件,严格意义上来讲不是配置文件,是用来存储配置参数的文件(里面放的是参数值)。
配置文件有两种格式:
1、属性文件 .propertie
键 = 值
server.port=8088spring.datasource.driver-class-name=
spring.datasource.url=
spring.datasource.password=
spring.datasource.username=
2、yml
语法结构:key:空格 value;
以此来表示一对键值对(空格不能省略);
以空格的缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级 的;
字面量直接写在后面就可以,字符串默认不用加上双引号或者单引号;
以#作为注释符号.
#配置服务器端口
server:port: 8088spring:datasource:driver-class-name:url:username:password:
springBoot数据访问管理(jdbc,mybatis,阿里数据源)
jdbc
1、导入依赖(记得添加mysql驱动依赖)
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--mysql--><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency>
2、在application.yml中配置数据源信息
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/newsdb?serverTimezone=Asia/Shanghaiusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver
阿里巴巴数据源
1、导入依赖
<!-- 阿里数据源 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>
2、 在application.yml中配置数据源信息
type: com.alibaba.druid.pool.DruidDataSourceinitialSize: 5maxActive: 20
myabtis
1、导入依赖
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency>
2、在application.yml中配置数据源信息
mybatis:type-aliases-package: com.ffyc.news.modelmapper-locations: classpath:/mappers/*Mapper.xmlconfiguration: #mybatis全局设置cache-enabled: truemap-underscore-to-camel-case: true #数据对列名 user_name 映射到java驼峰命名 userNamelog-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3、创建dao目录,创建model, 创建mappers
4、启动类上添加@MapperScan("接口所在的包地址")
package com.ffyc.news;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication//是springBoot中最核心的注解
@MapperScan("com.ffyc.news.dao")
public class NewsApplication {public static void main(String[] args) {SpringApplication.run(NewsApplication.class);}
}
springBoot注解
springboot 实现自动装配的核心仍然是使用注解标签,
@SpringBootApplication 是 springboot 核心注解,其中包含
@SpringBootConfiguration,
@EnableAutoConfiguration,
@ComponentScan.
@Configuration
加入@Configuration 注解,表明这就是一个配置类。有一个 myBean()的方法 并用@Bean 进行注释,返回一个 MyBean()的实例,表明这个方法是需要被 Spring 进行管理的 bean。@Bean 如果不指定名称的话,默认使用 myBean 名称,也就是小写的名称。
@Bean
相当于 XML 中的,放在方法的上面,而不是类,意思是产生一 个 bean,并交给 spring 管理。
springBoot集成日志功能(了解)
日志是我们程序中的重要的组成部分,可以监测我们程序运行的轨迹,记录参数值的变化,尤其是生产环境中非常必要,通过日志文件我们可以快速定位到这个问题。
实际生产环境中需要使用到日志。
常用日志组件
slf4j(Simple Logging Facade for Java)
commons-logging
Log4J
Log4J2
Logback
JUL(Java Utils Logging)
日志的级别划分:从低到高:debug<info<warn<error
配置日志级别和日志文件位置
logging:level:com.ffyc.news: debugfile:name: D:/log/log.log
创建logger对象
在需要的位置调用具体的日志级别方法输出
private static Logger logger = LoggerFactory.getLogger(LoginController.class);logger.debug("input account:{},password:{}",admin.getAccount(),admin.getPassword());
logger.info("input account:{},password:{}",admin.getAccount(),admin.getPassword());
logger.warn("input account:{},password:{}",admin.getAccount(),admin.getPassword());
logger.error("input account:{},password:{}",admin.getAccount(),admin.getPassword());
AOP项目中统一打印
1、导入依赖
<!--SpringBoot 使用 AOP 统一打印日志--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>
2、定义切面通知类util包.LogAspect类
package com.ffyc.news.util;import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;@Component
@Aspect
public class LogAspect {private Logger logger = LoggerFactory.getLogger(LogAspect.class);@Before("execution(public * com.ffyc.news.web..*.*(..))")public void savelog(JoinPoint joinPoint) {ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();// 记录以下请求内容logger.info("HTTP_METHOD :{} ", request.getMethod());logger.info("IP : {}", request.getRemoteAddr());//客户端 ipObject[] objs = joinPoint.getArgs();//获取方法参数logger.info(Arrays.toString(objs));}
}
springBoot统一异常处理
package com.ffyc.news.util;import com.ffyc.news.model.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;/*全局统一的异常处理类*/
@RestControllerAdvice
public class GlobalExceptionHandler {private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);/*** 异常处理*/@ExceptionHandler(Exception.class)public Result globalException(Exception e) {Result result = new Result(500,"系统忙:"+e.getMessage(),null);//向前端用户响应信息logger.info("Exception:"+e.getMessage());//向我们的日志文件打印信息e.printStackTrace();//打印异常信息到控制台return result;//向前端用户响应信息}
}
统一日志打印,统一异常处理都是AOP的实际使用场景,spring中的事务管理也是AOP的使用场景,到此,后端最基本的功能搭建完。