SpringBoot-尚硅谷笔记

一、hello world

目的:简化spring开发

技术栈:spring全家桶

J2EE一站式解决方案

优点

  • 与主流框架集成
  • 嵌入tomcat,直接生成jar包
  • starters启动器,自动配置依赖和版本管理
  • 无需xml,开箱即用
  • 提供准生产环境的应用监控
  • 与云计算集成

发展过程:

  1. 单体应用:所有的都写在一个应用里,牵一发动全身
  2. 微服务:独立功能元素,动态组合,节省资源,服务耦合降低

课程学习:谷粒学院、博学谷

知识前提:

  1. Spring框架掌握
  2. Maven掌握
  3. IDEA掌握

环境约束:

  1. jdk1.8
  2. maven3.x
  3. IDEA2017以上
  4. springboot 1.5.9 release

配置

maven添加配置

	<profile>
      <id>jdk-1.8</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
      </activation>
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        <maven.compiler.encoding>utf-8</maven.compiler.encoding>
      </properties>
    </profile>

IDEA配置

配置默认maven为指定maven

hello world

需求:浏览器发送hello请求,服务器返回处理结果

1.创建普通maven工程,无骨架

2.添加maven依赖

包括父工程依赖和springweb依赖,此处打包为jar

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>
    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

3.编写主程序

要掌握的注解:@SpringBootApplication。标志这是一个Springboot的应用,此时注解在主函数类外

main方法中:

SpringApplication.run(main类字节码文件,args)

4.编写controller文件

要掌握的注解:@Controller。表示这个类为控制类,映射请求

要掌握的注解:@RequestMapping。表示这个方法所映射的请求

要掌握的注解:@ResponseBody。表示这个方法会返回一个值给response

细代码可以参考springboot环境配置日志

5.看效果

可以直接工程中点击运行查看,然后去浏览器访问查看效果,也可以maven package打包成jar,然后:

java -jar xxx

然后浏览器访问即可

细节一二

  • RESTAPI解释
    服务器请求,处理后不是跳转页面,而是返回内容

如果某个controller类的所有mapping方法都是返回一个内容(字符串或者json),那么可以将@ResponseBody加到类上面。

要掌握的注解:@RestController。这个为:@ResponseBody+@Controller

使用spring initializer快速生成springboot项目

生成项目的目录结构:

  • 主程序已经生成好
  • resources文件夹:
    • static:保存静态资源:js css images
    • templates:存放模板引擎,默认jar包使用嵌入式tomcat,不支持jsp页面
    • application.properties:springboot应用配置文件,用来改变默认配置

二、springboot配置

配置文件

  • applicatin.properties
  • application.yml

用来改变springboot默认配置,路径:src/main/resource或者类路径/config

yml配置实例:

server:
    port: 8081

yml语法

基本语法

key: value
注意:key和value之间严格【空格】约定!同一缩进下的kv属于同一层级

不能是tab,只能是空格

注意事项:

  • 属性值中单引号中可以转义,双引号不会转移,字符串默认不用加引号
  • 对象表示可以用行内写法:friends: {lastname: ddd,age: 18}
  • 数组使用横杠空格表示元素
    #普通写法
    pets:
      - cat
      - dog
      - pig
    #行内写法
    pets: [cat,dog,pig]
    

配置文件注入javabean

配置文件内容:

person:
    name: abc
    age: 18
    dog:
      name: gaga
      age: 2
    lists:
      - abc
      - gaga

其中,person下的第一个层级都与javabean中的属性一一对应。

在Person类中,需要加上注解:@Component@ConfigurationProperties(prefix="person")

要掌握的注解:@ConfigurationProperties(prefix="person")。用于将配置文件内的对应属性映射到javabean上,其中prefix表示选定的配置文件字段,默认从全局配置文件中获取值

要掌握的注解:@PropertySource(...)。用于指定配置文件路径,可以指定多个,当需要获取其他文件里的配置需要加该注解

要掌握的注解::@Component。该注解将当前类加入容器管理,标识为spring的组件,这样才能使用第六个注解的功能

注意事项:

  • 使用上面的注解后会提示导入配置文件注解处理器包:
    <!--导入配置文件处理器后,配置文件中写绑定信息会有提示-->
    

验证注入情况

采用spring的测试类来查看注入情况

在test-java-包下有个测试类,包含两个注解:@RunWith(SpringRunner.class)@SpringBootTest,在测试类中写上Person person;并注解:@Autowired,然后定义一个方法输出该字段,并给该方法注解@Test

要掌握的注解:@RunWith(SpringRunner.class)。表示当前测试类使用的测试驱动器为springrunner,当然也可以指定为junit等

要掌握的注解:@SpringBootTest。表示当前类为springboot的测试类

要掌握的注解:@Autowired。表示当前类字段自动从spring容器中注入匹配的javabean

要掌握的注解:@Test。表示当前方法为需要测试的方法,必须注解在测试类中

properties语法

直接看:

#由于idea默认properties使用utf-8编码,
#而程序运行时默认采用ascii编码,
#所以输出中文会乱码,在idea的file encoding中设置运行时转码为ascii
person.last-name=abc
person.age=18
person.dog.name=gaga
person.dog.age=1
person.maps.k1=v1
person.map.k2=v2

要掌握的注解:@Value("${person.last-name})。该注解放在javabean类中的属性上,表示从spring容器中取出哪个值注入到当前属性中,value中也支持el表达式:@Value("#{11*2})会将22注入

注意:@ConfigurationProperties和@Value

  • 松散绑定:

在这里插入图片描述

只用configurationproperties支持松散绑定

  • spel语法:只有Value支持,毕竟另一个是统一注入的
  • jsr303校验:ConfigurationProperties支持,如类上加:@Validated,字段上加:@Email,则当前字段必须为邮箱格式,Value不支持
  • Value注解在复杂类型封装时不支持,只能注入基本数据类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值