zoukankan      html  css  js  c++  java
  • springboot详解

    1.springboot读取配置文件

    一.使用@Value标签

    配置文件

    user:
    username: ls
    age: 99
    password: 456

    绑定配置的对象

    @Component
    public class User {

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

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

      @Value("${user.age}")
      private int age
      . . . . . .
    二.使用@ConfigurationProperties

    配置文件

    employee:
    username: ls
    password: 456
    age: 99

    绑定配置的对象

    @Component
    @ConfigurationProperties(prefix = "employee")
    public class Employee {
      private String username
      private String password
      private int age

    @ConfigurationProperties : 自动的根据前缀从配置中过滤出配置项目,然后根据当前对象的列名进行匹配,自动赋值

    二.多环境配置切换

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

    注意:开在外部指定配置:java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

    2.方式二

    通过配置文件的名字来识别环境

    application-dev.yml

    spring:
    profiles: dev
    server:
    port: 1111

    application-test.yml

    spring:
    profiles: test
    server:
    port: 3333
     

    application.yml

    spring:
    profiles:
    active: test

    三.日志的使用

    1.基本使用
    private Logger logger = LoggerFactory.getLogger(MySpringBootTest.class);

    ...
    logger.error("我是一个error日志.....");
    logger.warn("我是一个warn日志.....");
    logger.info("我是一个info日志.....");

    logger.debug("我是一个debug日志.....");
    logger.trace("我是一个trace日志.....");

    基于Lombok打印

    1.导入依赖

     <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.10</version>
        <scope>provided</scope>
      </dependency>

    2.安装Lombok的idea插件

    3.打印日志

    @RestController
    @Slf4j
    public class HelloController{

    ...
    log.trace("全部信息...");
    log.debug("调试信息...");
    log.info("详细信息...");
    log.warn("警告信息...");
    log.error("错误信息...");

    }
    2.配置日志
    #logging.level.cn.itsource=error
    #logging.file=my.txt
    #logging.file.max-size=1KB
    #logging.pattern.console="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
    3.指定配置文件配置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.模板引擎的原理
    2.jsp的原理
    集成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>
      <!--使用语法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.编写主配置类
    5.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;
    }

    五.静态资源

    1.静态资源目录

    resource/static

    2.webjars

    导入jquery依赖 ( http://www.webjars.org/

    <dependency>
      <groupId>org.webjars</groupId>
      <artifactId>jquery</artifactId>
      <version>3.4.1</version>
    </dependency>

    导入jquery的js

    <script src="/webjars/jquery/3.4.1/jquery.js"></script>
    3.首页

    resources/index.html

    4.图标

    resources/favicon.ico

    六.SpringBoot中的MVC配置

    1.配置拦截器

    定义拦截器

    @Component
    public class MyHandlerInterceptor extends HandlerInterceptorAdapter {//或实现 implements HandlerInterceptor

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

    注册拦截器

    @SpringBootApplication
    public class ApplicationConfig implements WebMvcConfigurer {

      @Autowired
      private MyHandlerInterceptor myHandlerInterceptor;
      /**
        * 注册拦截器
        * @param registry :拦截器的注册器
        */
      @Override
      public void addInterceptors(InterceptorRegistry registry) {
          registry.addInterceptor(myHandlerInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
      }
    2.添加视图控制器
     @Override
      public void addViewControllers(ViewControllerRegistry registry) {
          registry.addViewController("/xx").setViewName("hello2.html");
      }

    当访问/xx 定位到 templates/hello2.html



  • 相关阅读:
    设计模式之设计原则
    把二叉树打印成多行
    快速排序的递归遍历和非递归遍历
    二叉树的非递归遍历
    约瑟夫环问题
    strcpy strcat strcmp memcpy函数的自己实现
    【解题模板】一些很基础的板子
    【笔记】取模运算的用法
    【OJ技巧】DSACPP pa-book中的一些提示
    【编程语言】Java基础进阶——面向对象部分
  • 原文地址:https://www.cnblogs.com/19930909a/p/12103097.html
Copyright © 2011-2022 走看看