• springboot笔记之helloworld


    开发工具:IDEA 2019

    springboot版本:2.1.9

    一、springboot2.x VS 1.x

    基础环境升级

    • 最低 JDK 8,支持 JDK 9,不再支持 Java 6 和 7


    依赖组件升级

    • Spring Boot 2.0 基于 Spring Framework 5 构建,同时也升级了部分其依赖的第三方组件:
    • Jetty 9.4
    • Tomcat 8.5
    • Flyway 5
    • Hibernate 5.2
    • Gradle 3.4
    • Thymeleaf 3.0


    默认软件替换和优化

    • HikariCP:默认连接池已从 Tomcat 切换到 HikariCP,HikariCP 是一个高性能的 JDBC 连接池
    • OAuth 2.0:Spring Boot 2.0 将 Spring Security OAuth 项目迁移到 Spring Security。不再提供单独的依赖包,通过 Spring Security 5 提供 OAuth 2.0 客户端支持.
    • Redis 默认使用 Lettuce


    测试

    • 对 Spring Boot 2.0 中测试进行了一些补充和调整;
    • @WebFluxTest 已添加新注释以支持 WebFlux 应用程序的“slice”测试。
    • Converter 和 GenericConverter beans 现在自动扫描 @WebMvcTest 和 @WebFluxTest。
    • @AutoConfigureWebTestClient 已经添加到 WebTestClient 供测试使用,这个注释会自动应用于 @WebFluxTest 测试。
    • 增加了一个新的 ApplicationContextRunner 测试实用程序,可以很容易地测试你的自动配置,我们已将大部分内部测试套件移至此新模型。

    新技术的引入

    • 支持 HTTP/2
    • 嵌入式 Netty 服务器
    • Kotlin 的支持
    • JOOQ 的支持
    • 支持 Quartz
    • 响应式编程

    二、hello-world

       利用IDEA工具创建springboot工程:springboot-demo

     pom.xml文件添加依赖
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

     

    编写 Controller 内容创建 HelloController

    @RestController
    public class HelloController {

      @RequestMapping("/hello")
      public String hello() {
        return "hello world";
      }

    }

    运行启动类:DemoApplication

    浏览器访问:http://localhost:8080/hello ,页面展示 hello world 。

     

    三、自定义filter

    Spring Boot 内置了一些 Filter,
    比如,处理编码的 OrderedCharacterEncodingFilter 和请求转化的 HiddenHttpMethodFilter,也支持根据我们的需求来可以自定义 Filter。

    自定义 Filter 有两种实现方式:(推荐使用第二个方案)
    第一种是使用 @WebFilter,
    第二种是使用 FilterRegistrationBean


    以第二种为例:
    1、实现 Filter 接口,实现其中的 doFilter() 方法;
    public class MyFilter implements Filter {
      public void init(){}

      public void doFilter(ServletRequest request,ServletResponse ServletResponse,FilterChain chain){}

      public void destroy(){}
    }

    2、添加 @Configuration 注解,将自定义 Filter 加入过滤链。

    @Configuration
    public class WebConfiguration {

    @Bean
    FilterRegistrationBean filterRegistrationBean(){
      FilterRegistrationBean registrationBean = new FilterRegistrationBean();
      registrationBean.setFilter(new MyFilter());
      registrationBean.addUrlPatterns("/*");
      registrationBean.setName("MyFilter");
      //当有多个过滤器时可以通过设置 Order 属性来决定它
      registrationBean.setOrder(6);
      return registrationBean;
    }
    }

     

    四、读取配置文件两种方式:

    在 application.properties 中自定义配置:

    demo.name=xxxxx

    从配置文件加载单个配置内容时:

    1、在注入的字段上使用注解 @Value 即可

    @Value("${demo.name}")
    private String name;

    2、定义对象接受多个配置项
    class类上使用注解 @ConfigurationProperties (prefix="demo") 列如:

    @Component
    @ConfigurationProperties (prefix="demo")
    public class Demo{

    private String name;

    }
    表示以 demo 开头的属性会自动赋值到对象的属性中,比如,demo.name 会自动赋值到对象属性 name 中

     

    五、自定义配置文件:


      1、在 resources 目录下创建一个 my.properties 文件
      my.name=test
      my.password=test

    2、定义对象接受配置项
    类上使用注解 @PropertySource("classpath:my.properties") 读取配置文件

    @Component
    @ConfigurationProperties(prefix = "my")
    @PropertySource("classpath:my.properties")
    public class MyProperties {

    private String name;
    private String password;
    //省略setter getter
    }

     

  • 相关阅读:
    hibernate各种状态
    Persistence createEntityManagerFactory方法使用
    JS数组学习笔记
    ES6笔记之参数默认值(译)
    JS是按值传递还是按引用传递?
    linux awk命令详解
    Linux Shell笔记之sed
    类似微信红包随机分配js方法
    ionic tabs隐藏完美解决
    mustache 获取json数据内数组对象指定元素的方法
  • 原文地址:https://www.cnblogs.com/qq99514925/p/11568391.html
Copyright © 2020-2023  润新知