Spring Boot

核心功能

  • 自动配置
  • 起步依赖
  • Actoator
  • 命令行界面

创建一个SpringBoot项目

  1. New Project ,选择Spring Initializr,进入下一步。
    在这里插入图片描述

  2. 填写相关信息,Group(组名称),Artifact(依赖名称),Package(SpringBoot启动类所在文件夹)。
    在这里插入图片描述

  3. 选择开发工具,这里我选择Web > Spring Web。
    在这里插入图片描述

  4. 填写项目名称和项目所在路径。

  5. 分配资源文件夹并初始化pom.xml(Add as maven project)。


SpringBoot的多环境配置

SringBoot的配置文件类型

  • application.properties
  • application.yml/yaml

如果同时存在以上两种配置文件,默认以application.properties为准。

SpringBoot的开发环境有哪些

  • 开发环境 application-dev.yml
  • 测试环境 application-test.yml
  • 准生产环境 application-ready.yml
  • 生产环境 aplication-prod.yml

如何切换开发环境

在application.yml中,切换spring: profiles: active: 的值即可。

spring:
  profiles:
	active: dev

例: 见上


SpringBoot获取配置文件中的值

使用@Value注解获取

假如在配置文件中,有这样一段配置:

user:
  realName: LiMing
  age: 18

那么我们该如何获取‘name’的值呢?

@Value("${user.realName}")
private String realName;

打印如下:
在这里插入图片描述

将自定义配置映射到对象

user:
  realName: WangLin
  age: 20
  1. 首先自定义User类,有两个属性realName、age,并且创建Setter和Getter。
  2. 将User类放入Spring容器中(@Component)。
  3. 添加注解@ConfigurationProperties(prefix = “user”)。

在这里插入图片描述

  1. 注入对象,获取属性,打印如下:
    在这里插入图片描述

mybatis逆向工程

什么是mybatis逆向工程?

简而言之,mybatis逆向工程就是通过数据表,生成对应的实体类和持久层。

如何使用mybatis逆向工程?

  1. 首先,导入 jdbcmbatis与spring Boot 集成的依赖
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.4.1</version>
</dependency>
  1. 创建逆向工程相关的xml,GeneratorMapper.xml。

百度网盘地址:https://pan.baidu.com/s/17Y-03sURjhz85nrjzK97Cw
提取码:jh4d

  1. 修改Jdbc相关jar包的路径和数据库链接信息。
  2. 在pom.xml中添加插件
<!--mybatis代码自动生成插件-->
<plugin>
	<groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-maven-plugin</artifactId>
	<version>1.3.6</version>
	<configuration>
		<configurationFile>GeneratorMapper.xml</configurationFile>
		<verbose>true</verbose>
		<overwrite>true</overwrite>
	</configuration>
</plugin>
  1. 测试
    此时访问,会报如下异常
    在这里插入图片描述
  2. 这是因为没有将xml文件编译
    在这里插入图片描述
  3. 添加xml文件为资源文件,在pom.xml中添加如下代码,手动添加资源文件夹。
<resources>
	<resource>
		<directory>src/main/java</directory>
		<includes>
			<include>**/*.xml</include>
		</includes>
	</resource>
</resources>

Mapper的存放位置

代码文件夹下

从上篇博文中我们知道,Mapper可以存放在java的子包下,这时我们可以通过添加mapper文件夹为资源文件夹的做法来编译mapper映射文件

类路径下

所谓的类路径,就是resources文件夹,此时我们可以在配置文件中设置映射文件的路径

mybatis:
  mapper-locations: classpath:mapper/*.xml

前提是:需要导入mybatis继承springBoot的依赖

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.0.0</version>
</dependency>

SpringBoot支持事务

Spring Boot是如何支持事务的?

事务经常被使用在“业务层”,在需要事务的方法或类上添加 @Transactional 注解


Resful相关注解

注解名称使用位置作用
@RestController控制层类上该类的所有方法返回的均是JSON对象 ,相当于@Controller + @ResponseBody
@GetMapper控制层方法上该方法只能通过"Get"请求方式访问,经常用于获取对象信息,相当于@RequestMapper(Value = “xxx”, method = Request.GET)
@PostMapper控制层方法上该方法只能通过"Post"请求方式访问,经常用于添加对象
@DeleteMapper控制层方法上该方法只能通过"Delete"请求方式访问,经常用于删除对象
@PutMapper控制层方法上该方法只能通过"Put"请求方式访问,经常用于更新对象信息
@PathVariable参数上获取路径中对应的参数,例@PathVariable(“id”) Integet id

SpringBoot整合Redis

  1. 导入SpringBoot整合redis的坐标
<!--SpringBoot集成redis-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 导入相关配置
spring:
  redis:
    host: localhost
    port: 6379
  1. 在service层注入RedisTemplate<Object, Object>。
  2. 使用redisTemplate.opsForValue().set(key, value)设置String类型的数据,同理,使用get(key)获取数据。

SpringBoot使用拦截器

1.自定义拦截器

  1. 自定义UserInterceptor类实现HandlerInterceptor,重写preHandle()、postHandle()以及afterCompletion()。
  2. 假设我们需要判断用户是否登录。
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    System.out.println("拦截器开始--------");
    // 判断用户是否登录
    User user = (User) request.getSession().getAttribute("user");
    if (user == null) {
        response.sendRedirect(request.getContextPath() + "/user/error");
        return false;
    }
    return true;
}

2.注册拦截器到拦截器的配置类

  1. 定义InterceptorConfig,添加注解@Configuration,将该类作为配置类。并且实现WebMvcConfigurer。
  2. 重写addInterceptors()方法,将自定义的拦截器注册到配置类中。
@Override
public void addInterceptors(InterceptorRegistry registry) {
    String[] pathPatterns = {"/user/**"};
    String[] excludePathPatterns = {"/user/login", "/user/other", "/user/error"};

    // mvc:Interceptor bean class= ""
    registry.addInterceptor(new UserInterceptor()).addPathPatterns(pathPatterns).excludePathPatterns(excludePathPatterns);
}

SpringBoot使用Servlet

1.Servlet的注解扫描

  1. 自定义MyServlet继承HttpServlet,并重写doGet()和doPost()。
  2. 在MyServlet上添加注解WebServlet(“xxx”)。
  3. 在SpringBoot的启动类上添加Servlet组件扫描@ServletComponentScan。

2.将Servlet注册到配置类中

  1. 自定义MyServlet继承HttpServlet,并重写doGet()和doPost()。
  2. 自定义配置类ServletConfig,并将其作为配置类(@Configuration)。
  3. 自定义一个返回值为ServletRegistrationBean的方法,将Servlet注册进配置类中。
    4.添加@Bean注解。
@Bean
public ServletRegistrationBean getServletRegistrationBean() {
    ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new MyServlet(), "/myServlet2");
    return servletRegistrationBean;
}

SpringBoot使用Filter

1.注解

  1. 自定义MyFilter实现Filter,并重写doFilter()。
  2. 在MyFilter上添加注解WebFilter(urlPattern = “xxx”),这里的urlPattern指的是拦截路径。
  3. 在SpringBoot的启动类上添加Servlet组件扫描@ServletComponentScan。

2.将Filter注册到配置类中

  1. 自定义MyFilter实现Filter,并重写doFilter()。
  2. 自定义配置类FilterConfig,并将其作为配置类(@Configuration)。
  3. 自定义一个返回值为FilterRegistrationBean的方法,将Servlet注册进配置类中。
    4.添加@Bean注解。
@Bean
public FilterRegistrationBean myFilterRegistrationBean() {
    FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new MyFilter());

    filterRegistrationBean.addUrlPatterns("/user/*");
    return filterRegistrationBean;
}

设置字符编码

创建字符编码配置类

  1. 创建Servlet,添加中文到响应消息中。
  2. 在Springboot的启动类添加Servlet组件扫描@ServletComponentScan。
  3. 创建配置类,添加一个返回值为FilterRegistrationBean的方法,具体细节如下
@Bean
public FilterRegistrationBean filterRegistrationBean() {
    // 创建字符编码过滤器
    CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter("UTF-8", true);

    FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();

    // 设置字符编码过滤器
    filterRegistrationBean.setFilter(characterEncodingFilter);

    // 设置字符编码过滤器路径
    filterRegistrationBean.addUrlPatterns("/*");
    return filterRegistrationBean;
}
  1. 关闭SpringBoot的http字符编码支持,Spring字符编码过滤器才会生效。
#关闭SpringBoot的http字符编码支持,Spring字符编码过滤器才会生效
server:
  servlet:
    encoding:
      enabled: false

修改核心配置文件

  1. 创建Servlet,添加中文到响应消息中。
  2. 在Springboot的启动类添加Servlet组件扫描@ServletComponentScan。
  3. 设置请求相应字符编码
#设置请求相应字符编码
server:
  servlet:
    encoding:
      enabled: true
      force: true
      charset: utf-8

springBoot打war包、jar包

war包

  1. 创建springboot工程,添加sprboot内嵌tomcat的依赖,指定其打包方式为war。
<packaging>war</packaging>
<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
  1. 添加控制层,其中有一个映射可以跳转到jsp页面。
@RequestMapping("/user/pageDetail")
public ModelAndView pageDetail() {
     ModelAndView modelAndView = new ModelAndView("userDetail");
     modelAndView.addObject("id", 1001);
     modelAndView.addObject("username", "XiaoMing");
     return modelAndView;
 }
  1. 添加webapp资源文件夹。
    在这里插入图片描述

  2. 创建userDetail.jsp,获取参数id和username。

  3. 配置视图解析器

spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
  1. 修改资源文件夹。
<!--指定打war包的字符-->
<finalName>springBoot</finalName>
<!--指定编译的位置-->
<resources>
	<resource>
		<directory>src/main/webapp</directory>
		<targetPath>META-INF/resources</targetPath>
		<includes>
			<include>*.*</include>
		</includes>
	</resource>
	<resource>
		<directory>src/main/resources</directory>
		<includes>
			<include>**/*.*</include>
		</includes>
	</resource>
</resources>
  1. 启动类继承SpringBootServletInitializer类,并重写其configure方法。
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    // 重新打包资源
    return builder.sources(Application.class);
}

jar包

  1. 创建springboot工程,添加sprboot内嵌tomcat的依赖。
<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
  1. 添加控制层,其中有一个映射可以跳转到jsp页面。
@RequestMapping("/user/pageDetail")
public ModelAndView pageDetail() {
     ModelAndView modelAndView = new ModelAndView("userDetail");
     modelAndView.addObject("id", 1001);
     modelAndView.addObject("username", "XiaoMing");
     return modelAndView;
 }
  1. 添加webapp资源文件夹。
    在这里插入图片描述

  2. 创建userDetail.jsp,获取参数id和username。

  3. 配置视图解析器

spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
  1. 修改资源文件夹。
<!--指定打war包的字符-->
<finalName>springBoot</finalName>
<!--指定编译的位置-->
<resources>
	<resource>
		<directory>src/main/webapp</directory>
		<targetPath>META-INF/resources</targetPath>
		<includes>
			<include>*.*</include>
		</includes>
	</resource>
	<resource>
		<directory>src/main/resources</directory>
		<includes>
			<include>**/*.*</include>
		</includes>
	</resource>
</resources>
  1. 指定打jar包插件的版本。
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<version>1.4.2.RELEASE</version>
</plugin>

logback基础配置如下

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别从低到高 TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为
WARN,则低于WARN的信息都不会输出-->
<!--scan: 当此属性为true时,配置文件如果发生变化,将会被重新加载,默认值为true-->
<!--scanPeriod: 设置检测配置文件是否有修改的时间间隙,如果没有给出时间单位,默认时
毫秒。当scan为true时,此属性生效,默认的时间间隔为1分钟。-->
<!--debug: 当此属性为true时,将打印出logback内部日志文件,实时查看logback运行状态。
默认值为false,通常不打印
-->
<configuration scan="true" scanPeriod="10 seconds">
	<!--输出到控制台-->
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<!--定义最低打印级别-->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>
		<encoder>
			<Pattern>%date [%5p] [%thread] %logger{60} [%file : %line] %msg%n</Pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>

	<!--输出到控制台-->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<File>D:/log/stdout.log</File>
		<encoder>
			<Pattern>%date [%-5p] [%thread] %logger{60} [%file : %line] %msg%n</Pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>D:/log/stdout.log.%d{yyyy-MM-dd}.log</fileNamePattern>
			<maxHistory>30</maxHistory>
		</rollingPolicy>
	</appender>

	<!--默认为DEBUG-->
	<logger name="com.gangwantech.mapper" level="TRACE"/>

	<root level="WARN">
		<appender-ref ref="CONSOLE"/>
		<appender-ref ref="FILE"/>
	</root>
</configuration>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值