spring boot学习

spring boot2.0 hello world

环境、文档

mvn3.3.9 eclipse4.5 spring boot2.0.3 RELEASE
官方文档首页
第一个spring boot应用 我们主要参考这一章节完成第一个应用。

hello world->step by step

  1. POM文件参见 第一个spring boot应用 Creating the POM,Adding Classpath Dependencies,Creating an Executable Jar 几个章节中涉及到pom的都加进去。
    4.5的eclipse自带的m2e的maven插件,可能会报错。需要更新一下m2e。用传统的eclipse的在线安装插件的办法即可,更新地址是http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-mavenarchiver/0.17.2/N/LATEST/
  2. 创建Example类,源码参见文档Writing the Code章节。
  3. 在你工程目录下执行 mvn spring-boot:run命令。
    注意,mvn需要设置JAVA_HOME环境变量,另spring boot2.0需要JDK1.8以上。 所以系统要设置指向 JDK1.8 的JAVA_HOME
    执行完成后在浏览器中访问http://localhost:8080 就可以看到页面显示Hello World!
  4. 执行mvn package打包。
    注意两个问题:
    一是Example类是否加了注解 @SpringBootApplication,否则会出现 Unable to find main class的错。
    二是注意POM文件中packaging标签是否声明成了war,如果这样只会打出war包,不会打出jar包。
    java -jar spring_boot_2.0_demo-0.0.1-SNAPSHOT.jar 就可以启动刚才的应用了。

spring boot2.0 从配置tomcat学习spring boot的配置

场景:假设要改变tomcat的http的端口号,日志级别,数据源等
几个特性:

  1. 支持引用maven/gradle构建工具的属性变量,这和我们用ant打包时为每个环境准备一套配置文件有点相似。
    74.1.1 Automatic Property Expansion Using Maven,支持这个特性的前置条件,文档中也有响应说明。
  2. 支持在src/main/resources/路径下的application.properties文件中覆盖默认配置, 比如:
    server.port=9080
    表示定义服务的端口监听在9080,如果用的嵌入的tomcat,那么这是tomcat的服务端口就监听在9080。
    3.除properties的方式改变配置外,还支持YML、JAVA API的方式。
    4.支持spring.config.location配置项、@PropertySource注解、SpringApplication.setSources() API等方式指定配置数据的路径。但是不管如何,application.properties要是存在,其配置信息仍然会被加载。
    5.properties文件中的值,支持占位符,占位符的值可以在命令行启动时设置:
    server.port=${port:8080}
    命令行启动时,指定--port=9000即可。
    6.支持profile配套的配置信息
    在命令行启动时通过-Dspring.profiles.active=production这样的方式指定prfoile的值,配置信息写在application-${profile}.properties文件中。
    我们如何找到spring boot支持的配置项?
    文档说加了@ConfigurationProperties注解的都是提供的默认配置项,诸如:ServerProperties、CacheProperties、MultipartProperties等。
    另 诸如数据源等配置,均可以以此方式进行。
    文档在Appendix A. Common application properties 章节列举了支持的配置项。
    另,日志等相关配置请参见 文档26.4章节。

spring boot2.0 rest形式暴露一个简单的增删改查

整合mybatis做了增删改查
controller service dao等与传统的spring开发方式无异。
数据源配置使用spring boot的方式进行配置:

datasource

spring.datasource.name=test
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/baasxx_ase?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=xxxx
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.maximum-pool-size=15
注意 2.0.3版本不要使用淘宝的druid,因为他用了org.springframework.boot.bind.RelaxedDataBinder
spring boot2.0.3不支持
spring boot支持的数据源类型有Commons DBCP2、 tomcat-jdbc、HikariCP,请参见Connection to a Production Database
章节,包括在什么情况下默认使用谁都有说明, 支持的配置项请参见DataSourceProperties类。
mybatis的dao只需写接口,需要配置@MapperScan("org.cnblogs.simoncook.springboot2.demo.comment.dao")
mybatis的配置文件扫描路径配置在application.properties
mybatis.mapper-locations: classpath:mapping/*.xml
contoller接口的json数据形式支持,需要加注解@ResponseBody 和 @RequestBody
调试使用 远程启动调试的方式 java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -jar target/spring_boot_2.0_demo-0.0.1-SNAPSHOT.jar

spring boot2.0 事务管理

用注解式,与spring的传统方式无异。

spring boot2.0 AOP

用注解式,与spring的传统方式无异。

spring boot2.0缓存

支持的种类:

  1. Generic
  2. JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, and others) 3. EhCache 2.x
  3. Hazelcast
  4. Infinispan
  5. Couchbase
  6. Redis
  7. Caffeine
  8. Simple

示例

通过配置项指定缓存类型:spring.cache.type=SIMPLE
在主类上加注解@EnableCaching(我这里Example类,就是那个加了@SpringBootApplication注解的类)

@Cacheable(value="dictItemsCache", key="#dictName")
    @Override
    public List<DictItem> queryDictItemByName(String dictName)
    {
        return dictDao.queryDictItemByName(dictName);
    }

通过测试发现,第一次访问会发出查询sql(logging.level.org.cnblogs.simoncook.springboot2.demo=DEBUG #可以开启mybatis的sql日志),第二次访问不会。

spring boot2.0 bean装配高级特性

spring boot2.0监控

web形式在2.0.3默认只开启三四个监控指标,其余的需要在application.properties文件中配置开启:
management.endpoints.web.exposure.include=*
参见文档50.2 Exposing Endpoints

原文地址:https://www.cnblogs.com/simoncook/p/9201402.html