美文网首页
spring-boot实战笔记-1

spring-boot实战笔记-1

作者: liangxifeng833 | 来源:发表于2018-01-22 15:46 被阅读17次

Spring boot = 起步依赖+自动配置

Spring Initializr

  • 从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构
    Spring Initializr有几种用法。
     通过Web界面使用。
     通过Spring Tool Suite使用。
     通过IntelliJ IDEA使用。
     使用Spring Boot CLI使用
  • 我使用
    • IDEA创建项目->Spring Initializr创建的
    • 或命令行:spring init -dweb,data-jpa,mysql,thymeleaf --build maven readinglist,会自动在当前目录生成demo.zip,就是完整的基于maven的spring-boot目录结构

注解

  • @SpringBootApplication等效于以下注解组合
    • Spring的 @Configuration,基于Java而不是XML的配置
    • Spring的 @ComponentScan :启用组件扫描,自动配置bean
    • Spring Boot 的 @EnableAutoConfiguration,开启了Spring Boot自动配置

外置配置属性(一)应用程序 Bean

  • @ConfigurationProperties 注解可以在控制器中引入,application.yml自定义的配置属性变量,前提是必须导入依赖
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-configuration-processor</artifactId>
           <optional>true</optional>
       </dependency>
  • HelloWorld控制器

    @RestController
    //使用application.yml中的lxf-customer前缀的自定义属性
    @ConfigurationProperties(prefix = "lxf-customer")
    public class HelloWorld {
          private final Logger logger =   LoggerFactory.getLogger(HelloWorld.class);
          //定义username属性,可以通过@ConfigurationProperties注解接收application.yml配置的自定义属性,必须配置setUserename方法
          private String username;
          public void setUsername(String username) {
            this.username = username;
        }
        @GetMapping(value = "/hello")
        public String testHello()
        {
            return "hello world!" + username ;
        }
    }
    
  • 以上例子我们也可以把,username自定义属性相关的信息放在一个单独的Bean中,比如:CustomerProperties

package com.example.readinglist.others;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 *  自定义属性
 */
@Component
//带有lxf-customer前缀的属性,在application.yml中定义
@ConfigurationProperties("lxf-customer")
public class CustomerProperties {
    private String username;

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }
}

此时在HelloWorld中使用application.yml在自定义的username属性:

@RestController
//使用application.yml中的lxf-customer前缀的自定义属性
@ConfigurationProperties(prefix = "lxf-customer")
public class HelloWorld {
    @Autowired
    //自定义属性文件,该文件通过@ConfigurationProperties("lxf-customer")
    //获取application.yml中的lxf-customer.username属性
    private CustomerProperties customerProperties;

    @GetMapping(value = "/hello")
    public String testHello()
    {
        return "hello world!" + customerProperties.getUsername() ;
    }
}

外置配置属性(二)Profile条件化配置

配置maven

参考文章

相关文章

网友评论

      本文标题:spring-boot实战笔记-1

      本文链接:https://www.haomeiwen.com/subject/mvvrnxtx.html