spring boot 学习一

spring boot

  SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率。

  SpringBoot具有自动配置、起步依赖、辅助功能的作用

  注意:Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。

1、如何快速搭建一个SpringBoot工程

  1. 创建Maven项目
  2. 导入SpringBoot起步依赖
    • 这里必须要添加这个parent这个父类,由于springboot要与springcloud一起使用,两者的版本要保持一致
    •  1 <!--springboot工程需要继承的父工程-->
       2     <parent>
       3         <groupId>org.springframework.boot</groupId>
       4         <artifactId>spring-boot-starter-parent</artifactId>
       5         <version>2.1.8.RELEASE</version>
       6     </parent>
       7 
       8     <dependencies>
       9         <!--web开发的起步依赖-->
      10         <dependency>
      11             <groupId>org.springframework.boot</groupId>
      12             <artifactId>spring-boot-starter-web</artifactId>
      13         </dependency>
      14     </dependencies>
  3. 编写引导类
    • 引导类需要加@SpringBootApplication这样的注解
    •  1 /**
       2  * 引导类。 SpringBoot项目的入口
       3  */
       4 @SpringBootApplication
       5 public class HelloApplication {
       6 
       7     public static void main(String[] args) {
       8         SpringApplication.run(HelloApplication.class,args);
       9     }
      10 }
  4. 编写配置文件(application.yml)
    •  1 server: #指定tomcat端口号以及ip地址 2 port: 8080 3 address: 127.0.0.1    
  5. 定义Controller

注意:此时运行项目,就可以了,因为SpringBoot内部内置了tomcat服务器

2、SpringBoot配置-配置文件分类

  SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。

  • 默认配置文件名称:application
  • 统计目录下的优先级为 properties>yml>yaml

基本语法:

  • 大小写敏感
  • 数据前边必须有空格,作为分隔符
  • 缩进时不允许使用tab键(idea中可以使用),只允许使用空格
  • 相同层级的元素左侧对齐
  • #表示注释,从字符一直到行尾,都会被解析器忽略

数据格式:

  • 对象(map)键值对的集合
    • person:
    •   name:张三
  • 数组 一组按次序排列的值
    • address
    •    - 北金
    •  - 南宋
  • 纯量 单个不可再分的值
    • msg:"hello world"  # 双引识别转义字符
    • msg:'hello world'  # 单引忽略转义字符

获取配置文件中的数据3种方式:

  1. @Value
    • #获取对象属性
      @Value("${person.name}")

      private String name2;
    • #获取数组
      @Value("${address[0]}")
      private String address1;

  2. Evironment
    • 注入Evironment对象,通过getProperty获取值
    • @Autowired

      private Environment env;                    System.out.println(env.getProperty("person.name"));

  3. 定义实体类,类的上方要加@ConfigurationProperties注解,且需要有前缀 prfix
    • @Component
      @ConfigurationProperties(prefix = "person")
      public class Person {

      private String name;
      private int age;
      private String[] address;}

       

3、SpringBoot配置-profile

  profile是用来完成不同环境下,配置动态切换功能的

  1. 多profile文件方式:提供多个配置文件,每个代表一种环境,在application文件中指定激活的配置,spring.profiles.active=dev
    • application-dev.properties/yml 开发环境
    • application-test.properties/yml 测试环境
    • application-pro.properties/yml 生产环境
  2. yml多文档方式
    • 将每种开发环境之间用--- 3个-分割,每个配置都需要指定
      spring:
      profiles: pro 这样的指定
      最后指定需要激活的配置  spring.profiles.active=dev
  3. profile激活方式
    1. 配置文件: 再配置文件中配置:spring.profiles.active=dev
    2. 虚拟机参数:在VM options 指定:-Dspring.profiles.active=dev
    3. 命令行参数:java –jar xxx.jar --spring.profiles.active=dev

4、SpringBoot整合Junit

  • 搭建SpringBoot工程
  • 引入starter-test起步依赖
    •  1  <dependencies>
       2         <dependency>
       3             <groupId>org.springframework.boot</groupId>
       4             <artifactId>spring-boot-starter</artifactId>
       5         </dependency>
       6 
       7         <dependency>
       8             <groupId>org.springframework.boot</groupId>
       9             <artifactId>spring-boot-starter-test</artifactId>
      10             <scope>test</scope>
      11         </dependency>
      12     </dependencies>
  • 编写测试类   测试类上方的注解必须是这样的,第二个注解为启动引导类的字节码文件
    •  1 /**
       2  * 测试类*/
       3 @RunWith(SpringRunner.class) 
       4 @SpringBootTest(classes = SpringbootJunitApplication.class ) //这个地方必须是启动类的字节码文件
       5 public class UserServiceTest {
       6     @Test
       7     public void test(){
       8         System.out.println(111);
       9     }
      10 }

5、SpringBoot整合Mybatis

  • 搭建SpringBoot工程
  • 引入mybatis起步依赖,添加mysql驱动
    •  1 <dependencies>
       2         <dependency>
       3             <groupId>org.mybatis.spring.boot</groupId>
       4             <artifactId>mybatis-spring-boot-starter</artifactId>
       5             <version>2.1.3</version>
       6         </dependency>
       7 
       8         <dependency>
       9             <groupId>mysql</groupId>
      10             <artifactId>mysql-connector-java</artifactId>
      11             <version>5.1.6</version>
      12             <scope>runtime</scope>
      13         </dependency>
      14 
      15         <dependency>
      16             <groupId>org.springframework.boot</groupId>
      17             <artifactId>spring-boot-starter-test</artifactId>
      18             <scope>test</scope>
      19         </dependency>
      20     </dependencies>

      注意:这里需指定mybatis连接驱动的版本,因为springboot指定的mybatis的版本是8.0以上

  • 编写DataSource和MyBatis相关的配置
    •  1 # datasource
       2 spring:
       3   profiles: dev
       4   datasource:
       5     url: jdbc:mysql://192.168.236.129/db5
       6     username: root
       7     password: ******
       8     driver-class-name: com.mysql.jdbc.Driver
       9 
      10   # mybatis/
      11 mybatis:
      12     mapper-locations: classpath:mapper/*Mapper.xml # mapper映射文件路径
      13     type-aliases-package: com.itheima.domain
      14   # config-location:  # 指定mybatis的核心配置文件

       

  • 定义实体类
  • xml方式 编写dao 和 mapper文件  /纯注解方式.
    • //dao
      @Mapper
      @Repository
      public interface UserXmlMapper {
      
          public List<User> findAll();
      }
      //mapper.xml
      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.itheima.springbootmybatis.mapper.UserXmlMapper">
          <select id="findAll" resultType="user">
              select * from t_user
          </select>
      </mapper>
      
      //纯注解
      @Mapper
      @Repository
      public interface UserMapper {
      
          @Select("select * from t_user")
          public List<User> findAll();
      }
        
原文地址:https://www.cnblogs.com/luckysupermarket/p/13782299.html