前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot入门(一)

SpringBoot入门(一)

作者头像
晚上没宵夜
发布2020-03-10 09:27:35
3780
发布2020-03-10 09:27:35
举报
文章被收录于专栏:Howl同学的学习笔记

1 简介

Spring Boot是快速搭建Spring工程的脚手架,简化配置与依赖关系(约定大于配置),让我们把精力集中在业务部分

2 简单入门事例

创建一个Hello World的Web工程

2.1 创建Maven工程

直接Next -> 填写工程坐标 -> 创建

2.2 添加pom.xml依赖

父工程管理jar包,没有业务代码,子工程需要jar包时不用写版本号

代码语言:javascript
复制
<!--  父工程  -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
</parent>

<!--  设置JDK版本  -->
<properties>
    <java.version>1.8</java.version>
</properties>

<!--  添加依赖  -->
<dependencies>
    <!--  场景启动器  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

2.3 创建主程序类Application

注意Application要放在根目录下,因为会去Application的同级目录去扫描,注意左边有层级结构

代码语言:javascript
复制
@SpringBootApplication
public class Application {

    public static void main(String[] args) {

        //SpringBoot启动
        SpringApplication.run(Application.class,args);
    }
}

2.4 创建Controller

代码语言:javascript
复制
@RestController
public class HelloController {

    //请求映射
    @RequestMapping(value = "hello",method = RequestMethod.GET)
    public String hello(){
        return "Hello Worlddddd";
    }
}

2.5 启动并测试

启动SpringBoot应用

打开浏览器测试成功

总结

  • 父工程管理各种依赖,Spring已经帮我们测试好各版本之间的关系了,所以添加依赖不用版本号
  • 启动器帮我们导入各种场景所需要组件
  • @SpringBootApplication标注说明这个类是主配置类,运行该类的main方法来启动SpringBoot应用

3. 自动配置

我们来看看@SpringBootApplication这个组合注释,底层还包括两个注解

  • @SpringBootConfiguration:SpringBoot的配置类,标注在类上表示该类是个配置类
    • 它底层又有@Configuration:Spring的注解,放在配置类上
      • 配置类--配置文件:配置类也是容器中的一个组件:@Component
  • @EnableAutoConfiguration:开启自动配置,以前需要配置的东西,SpringBoot帮我们自动配置
    • 它底层有@AutoConfigurationPackage:自动配置包
      • Import(AutoConfigurationPackages.Registrar.class):Spring底层注解,给容器导入组件,即将主程序同级及下面子包所有组件扫描到Spring容器中
    • @Import(.AutoConfigurationImportSelector.class):导入组件的选择器,会给容器导入非常多的自动配置类(xxxAutoConfiguration),并配置好对应的组件
  • 有了自动配置类就免去了手动编写配置注入组件了,其实现由SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader)完成

总结:SpringBoot启动时从类路径下META_INF/spring.factories获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作

4. 配置文件

  • 名字是固定以application开头的
  • 有两种方式application.properties和application.yml
  • 用来修改SpringBoot默认配置

4.1 读取配置文件(这里以yml为事例)

  • 首先要在resources下创建application.yml配置文件,然后在里面输入需要被读取的数据
代码语言:javascript
复制
jdbc:
  driverclassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
  username: root
  password: howl
  • 创建bean类,把配置的属性值写入bean对象中
  • 需要用到@ConfigurationProperties()注解,该注解需要导入依赖
代码语言:javascript
复制
<!--  注解解析器  -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
  • 只有这个对象是容器中的组件,才能使用容器的@ConfigurationProperties功能
代码语言:javascript
复制
/*
 * @ConfigurationProperties把配置文件的属性注入该类中
 */
@Component
@ConfigurationProperties(prefix = "jdbc")
public class JDBC {
    private String driverclassName;
    private String url;
    private String username;
    private String password;

    //各种Getters和Setters
}
  • 结构图
  • 最后 再次启动Web应用,application.yml中以jdbc为前缀的属性会自动注入到JDBC这个对象组件中去

常用注解

代码语言:javascript
复制
//将配置文件的属性注入到该对象中,只有这个注解是生效的,需要配合@EnableConfigurationProperties注解,或加入@Component注解
@ConfigurationProperties(prefix = "jdbc")

//属性注入
@value("${name}")

//使对应的配置文件生效加入到Bean容器
@EnableConfigurationProperties(JDBCProperties.class)

//声明一个类为配置类,代替xml文件,一般配合@Bean注解
@Configuration
//声明在方法上,将返回值加入Bean容器,代替<bean>标签
@Bean

//------------推荐使用上面来指定配置文件,在主目录下创一个config包-------------

//指定外部属性文件,这时还没生效,需要配合下面的注解
@PropertySource(value = {"classpath:other.properties"})
//加载多个配置文件,放在主程序类上
@ImportResourcec(locations = {"classpath:other.yml"})

@ConfigurationProperties和@value区别

@ConfigurationProperties

@value

功能

批量注入配置

单个指定

松散绑定

支持

不支持

SpEL

不支持

支持

JSR303数据校验

支持

不支持

复杂数据类型

支持

不支持

4.2 Profile

  • 在不同环境下需要使用不同的配置文件,这里就可以用Profile
  • 名称规范 application-{profile}.yml / properties
  • 默认是application.yml /properties里的配置

我们在resources下建立两个配置文件

  • application.yml(用于部署配置)
  • application-dev.yml(用于生产环境)

二者用上面的JDBC配置文件,不同于username,一个为root,一个为Howl

激活测试

代码语言:javascript
复制
# 在application.yml主配置文件中添加下面配置
spring:
  profiles:
    active: dev

Controller代码

代码语言:javascript
复制
//请求映射
@RequestMapping(value = "hello",method = RequestMethod.GET)
public String hello(){
    return jdbc.getUsername();
}

未激活dev前,username为root

激活dev后为,username为Howl

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 简介
  • 2 简单入门事例
    • 2.1 创建Maven工程
      • 2.2 添加pom.xml依赖
        • 2.3 创建主程序类Application
          • 2.4 创建Controller
            • 2.5 启动并测试
            • 3. 自动配置
            • 4. 配置文件
              • 4.1 读取配置文件(这里以yml为事例)
                • 4.2 Profile
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档