以太坊 阿里云 Cluster模式 软件开发 collections layer uiwebview odbc rss vue图表 react脚手架 less使用 hbase端口 linux查看防火墙 div字体加粗 mysql配置远程连接 mysql查询 mysql建表 python中的for循环 python创建txt文件并写入 python正则表达式例子 java遍历集合 java数组最大值 微信助力软件 pr缩放 超级力量2修改 刷声望 mathcad15 teraterm 图片轮播代码 list删除指定元素 画图怎么添加文字 坐标标注插件 脚本网站 暗黑3挂机plusready 松下plc编程软件 数据结构与算法分析 asp程序下载 调试js 小米开发者选项
当前位置: 首页 > 学习教程  > 编程语言

Spring Boot 教程(3)Spring Boot 基础配置

2020/8/31 14:10:32 文章标签:

Spring Boot 教程(3)Spring Boot 基础配置

1.自定义Banner配置

在resource目录下新建banner.txt,在该txt文件中写需要展示的内容即可替换spring boot 的默认banner。

如何生成类似官方的banner呢?

登录http://patorjk.com/software/taag/网站,设计banner。

 

如何关闭banner?

修改启动类的相关配置

@SpringBootApplication
public class SbbaseconfigApplication {
​
    public static void main(String[] args) {
       // SpringApplication.run(SbbaseconfigApplication.class, args);
        SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(SbbaseconfigApplication.class);
        SpringApplication build = springApplicationBuilder.build();
        build.setBannerMode(Banner.Mode.OFF); //关闭banner
        build.run(args);
    }
​
}

2.内嵌容器

Spring Boot 提供了三种内嵌容器:tomcat、jetty、Undertow。必须引入spring-boot-starter-web。

spring-boot-starter-web 默认使用的是tomcat。

tomcat相关配置

#修改服务器端口
server.port=8081
#修改上下文路径
server.servlet.context-path=/sbbaseconfig
#修改 tomcat Url编码
server.tomcat.uri-encoding=utf-8
​

怎么使用jetty或Undertow容器

首先要排除掉tomcat,再引入jetty 或Undertow

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
       <!-- <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
​

3.Spring 属性注入

3.1在 application.properties配置属性

book.id=1
book.name=红楼梦
book.author=曹雪芹

Book.java

/**
 * @author 飞鱼xuy
 * @gitee https://gitee.com/xuyou1028/
 */
@Component
public class Book {
    @Value("${book.id}") //  ctrl+d 复制当前行到下一行 alt+shift+下箭头移动当前行
    private Integer id;
    @Value("${book.name}")
    private  String name;
    @Value("${book.author}")
    private  String author;
​
    public Integer getId() {
        return id;
    }
​
    public void setId(Integer id) {
        this.id = id;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getAuthor() {
        return author;
    }
​
    public void setAuthor(String author) {
        this.author = author;
    }
​
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                '}';
    }
}

编写测试

@SpringBootTest
class SbbaseconfigApplicationTests {
​
    @Autowired
    Book book;
    @Test
    void contextLoads() {
        System.out.println(book);
    }
​
}

运行测试 控制台输出 Book{id=1, name='红楼梦', author='曹雪芹'} .如果遇到中文乱码的情况,需要对idea进行设置如下。

 

3.2 自定义properties ,然后注入

新建 book.properties

book.id=1
book.name=红楼梦
book.author=曹雪芹

在需要注入的类上使用注解@PropertySource("classpath:book.properties")。注意此注解属于spring注解,不是spring boot特有的。此注解只能注入properties文件中的注解,不能注入yaml文件里的注解。

Book.java

/**
 * @author 飞鱼xuy
 * @gitee https://gitee.com/xuyou1028/
 */
@Component
@PropertySource("classpath:book.properties")
public class Book {
    @Value("${book.id}") //  ctrl+d 复制当前行到下一行 alt+shift+下箭头移动当前行
    private Integer id;
    @Value("${book.name}")
    private  String name;
    @Value("${book.author}")
    private  String author;
​
    public Integer getId() {
        return id;
    }
​
    public void setId(Integer id) {
        this.id = id;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getAuthor() {
        return author;
    }
​
    public void setAuthor(String author) {
        this.author = author;
    }
​
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                '}';
    }
}

4.类型安全的属性注入 @ConfigurationProperties

该注解是spring boot 独有注解。使用此注解后,可以去除@value注解,降低对代码的污染。

Book2.java

@Component
@PropertySource("classpath:book.properties")
@ConfigurationProperties(prefix="book")
public class Book2 {
    private Integer id;
    private  String name;
    private  String author;
​
    public Integer getId() {
        return id;
    }
​
    public void setId(Integer id) {
        this.id = id;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getAuthor() {
        return author;
    }
​
    public void setAuthor(String author) {
        this.author = author;
    }
​
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                '}';
    }
}

测试类

@SpringBootTest
class SbbaseconfigApplicationTests {
​
 
    @Autowired
    Book2 book2;
    @Test
    void contextLoads2() {
        System.out.println(book2);
    }
​
}

5.Yaml配置 基础

*.yaml/ *.yml与properties区别

1.yml配置是有序的,properties配置是无序的。

2.yml不支持 使用PropertySource直接注入

3.支持配置列表 数据结构

注入 List(1)

application.yml

redis:
  port: 6379
  hosts:
    - 192.168.20.1
    - 192.168.20.2
    - 192.168.20.3
    - 192.168.20.4

注入类

@Component
@ConfigurationProperties(prefix ="redis" )
public class RedisCluster {
    private Integer port;
    private List<String> hosts;
​
    public Integer getPort() {
        return port;
    }
​
    public void setPort(Integer port) {
        this.port = port;
    }
​
    public List<String> getHosts() {
        return hosts;
    }
​
    public void setHosts(List<String> hosts) {
        this.hosts = hosts;
    }
​
    @Override
    public String toString() {
        return "RedisCluster{" +
                "port=" + port +
                ", hosts=" + hosts +
                '}';
    }
}

测试类

@SpringBootTest
class SbbaseconfigApplicationTests {
​
    @Autowired
    RedisCluster redisCluster;
    
    @Test
    void contextLoads4() {
        System.out.println(redisCluster);
    }
​
}

控制台输出结果:RedisCluster{port=6379, host=[192.168.20.1, 192.168.20.2, 192.168.20.3, 192.168.20.4]}

注入 List<Redis>(2)

application.yml

redis:
  port: 6379
  hosts:
    - 192.168.20.1
    - 192.168.20.2
    - 192.168.20.3
    - 192.168.20.4
  redisList:
    - port: 6379
      host: 192.168.30.1
    - port: 6378
      host: 192.168.30.2

RedisCluster.java

@Component
@ConfigurationProperties(prefix ="redis" )
public class RedisCluster {
    private Integer port;
    private List<String> hosts;
    List<Redis> redisList;
​
    public Integer getPort() {
        return port;
    }
​
    public void setPort(Integer port) {
        this.port = port;
    }
​
    public List<String> getHosts() {
        return hosts;
    }
​
    public void setHosts(List<String> hosts) {
        this.hosts = hosts;
    }
​
    public List<Redis> getRedisList() {
        return redisList;
    }
​
    public void setRedisList(List<Redis> redisList) {
        this.redisList = redisList;
    }
​
    @Override
    public String toString() {
        return "RedisCluster{" +
                "port=" + port +
                ", hosts=" + hosts +
                ", redisList=" + redisList +
                '}';
    }
}

控制台打印;RedisCluster{port=6379, hosts=[192.168.20.1, 192.168.20.2, 192.168.20.3, 192.168.20.4], redisList=[Redis{port=6379, host='192.168.30.1'}, Redis{port=6378, host='192.168.30.2'}]}

6.Profile

在实际开发之中 由于开发(dev) 测试(test) 运行(product)的环境不同,有可能需要选择不同的配置文件。profile就是用来解决这个问题的。

新建application-dev.properties、application-test.properties或者application-dev.yaml、application-test.yaml

新建application-dev.properties

#端口配置
server.port=7777

新建新建application-test.properties

#端口配置
server.port=8888

激活application-dev.properties这个配置

在appliation.properties中配置

spring.profiles.active=dev

重新启动服务

此时服务端口为7777.如果配置spring.profiles.active=test,服务端口为8888。这样就做到了在不同环境使用不同的配置。

#  欢迎提出您的宝贵建议。如果对您有帮助,请点推荐支持一下。

源码地址:https://gitee.com/xuyou1028/spring-boot-tutorial/tree/master/sbbaseconfig


本文链接: http://www.dtmao.cc/news_show_150193.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?