SpringBoot进阶

SpringBoot项目打包

1、pom.xml打包插件

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

2、双击package打包成Jar包
3、独立运行
找到打包的Jar目录,cmd命令:java -jar Jar包的绝对路径

SpringBoot热部署

导包即可

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
 </dependency>

(修改代码重新编译程序会重启SpringBoot)

yml基本语法:

多个级之间用:分类,并且换行缩进 , 值不用换行 , 值前面有个空格

读取yml配置

1、使用@Value标签
配置文件:

user:
  username: ls
  password: 456
  age: 99

绑定配置的对象:

@Component
public class User {

    //@Value :从配置文件中取值   SPEL
    @Value("${user.username}")
    private String username;

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

    @Value("${user.age}")
    private int age;
    . . . . . . 
}

2、使用@ConfigurationProperties
配置文件:

employee:
  username: ls
  password: 456
  age: 99

绑定配置的对象:

@Component
@ConfigurationProperties(prefix = "employee")
public class Employee {
    private String username = "zs";
    private String password = "123";
    private int age = 18;
}
多环境配置切换

1、方式一

spring:
  profiles:
    active: test    #激活(选择)环境test
---
spring:
  profiles: dev    #指定环境名字dev
server:
  port: 9999
---
spring:
  profiles: test    #指定环境名字test
server:
  port: 8888

2、方式二
通过配置文件的名字来识别环境
application-dev.yml

server:
  port: 9999

application-test.yml

server:
  port: 8888

application.yml

spring:
  profiles:
    active: test 
    #根据文件名字配置 application-dev.properties
SpringBoot测试

1、导包
在原有基础上面导入spring-boot-starter-test

 <dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
</dependency>

2、测试类上打标签
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ApplicationConfig.class)

日志打印

1、基本使用

private Logger logger = LoggerFactory.getLogger(MySpringBootTest.class);
 logger.error("我是一个error日志.....");
 logger.warn("我是一个warn日志.....");
 logger.info("我是一个info日志.....");
logger.debug("我是一个debug日志.....");
logger.trace("我是一个trace日志.....");

2、日志级别修改
application.yml

logging:
  level:
    root: debug

3、logback日志使用
指定配置文件配置logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 定义常量 : 日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n"/>

    <!--ConsoleAppender 用于在屏幕上输出日志-->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--定义控制台输出格式-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--打印到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>logs/springboot.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>logs/springboot-%d{yyyyMMdd}-%i.log.gz</fileNamePattern>
            <maxFileSize>1KB</maxFileSize>
            <maxHistory>30</maxHistory>
            <!--总上限大小-->
            <totalSizeCap>5GB</totalSizeCap>
        </rollingPolicy>
        <!--定义控制台输出格式-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!--root是默认的logger 这里设定输出级别是debug-->
    <root level="info">
        <!--定义了两个appender,日志会通过往这两个appender里面写-->
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </root>

    <!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
    <!--additivity表示要不要使用rootLogger配置的appender进行输出-->
    <logger name="cn.itsource" level="error" additivity="false">
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </logger>

</configuration>
SpringBoot集成Thymeleaf

1、导包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2、创建模板 resources/templates/hello.html

<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>成功!</h1>
    <!--Thymeleaf使用语法th:text 将div里面的文本内容设置为 -->

    <div th:text="${msg}">这是显示欢迎信息</div>
</body>
</html>

3、编写Controller

@Controller
public class HelloController {
    @RequestMapping("/index")
    public String hello(Model model){
        model.addAttribute("msg","哈哈哈哈" );
        return "hello";
    }
}

4、Thymeleaf的自动配置原理
@EnableAutoConfiguration 开启自动配置功能,通过一个AutoConfigurationImportSelector导入选择器去扫描 spring-boot-autoconfigure-2.0.5.RELEASE.jar 自动配置包下面的 spring.factories 文件中的很多很多的自动配置的类
而:ThymeleafAutoConfiguration 是Thymeleaf的自动配置 ,在这个自动配置类里面通过一个ThymeleafProperties去读取配置文件中的配置(也有默认配置) ,来自动配置Thymeleaf,比如Thymeleaf的视图解析器的自动配置如下:

@Bean
@ConditionalOnMissingBean(name = "thymeleafViewResolver")
public ThymeleafViewResolver thymeleafViewResolver() {
	ThymeleafViewResolver resolver = new ThymeleafViewResolver();
	...
	return resolver;
}
SpringBoot拦截器:

1、自定义一个类继承HandlerInterceptorAdapter

@Component
public class MyInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截:"+request.getRequestURI());
        return super.preHandle(request, response, handler);
    }
}

2、主配置类实现接口WebMvcConfigurer
覆写方法:添加拦截器

@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
       registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
}
SpringBoot集成Mybatis

1、导包

<dependency>
   <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.20</version>
</dependency>
<!-- mysql 数据库驱动. -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
</dependency>

2、application.yml

spring:
  profiles:
    active: dev
  #配置DataSource
  datasource:
    username: root
    password: 1234
    url: jdbc:mysql:///person
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource  #使用哪个连接池
#配置Mybatis
mybatis:
  mapper-locations: classpath:cn/itsource/hello/mapper/*Mapper.xml
  #type-aliases-package: cn.itsource.domain

3、@MapperScan(“com.lxn.hello.mapper”)
mapper映射器的扫描需要在主配置类上配置打注解,千万不要忘了
4、@EnableTransactionManagement
启注解事务管理,等同于xml配置方式的 <tx:annotation-driven />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值