springboot学习总结(一)外部配置(命令行参数配置、常规属性配置、类型安全的配置之基于properties)

学习的内容主要是汪云飞的《Spring Boot实战》

(一)命令行参数配置

springboot项目可以基于jar包运行,打开jar的程序可以通过下面命令行运行:

java -jar xxx.jar

可以通过以下命令修改tomcat端口号

java -jar xxx.jar --server.port=9090

(二)常规属性配置

在springboot项目中,我们只需在application.properties定义属性,直接使用@Value注入即可

(1)application.properties中添加属性

book.author=wangyunfei
book.name=spring boot

(2)修改入口类

package com.vincent.demo;

import com.vincent.demo.config.Author;
import com.vincent.demo.config.HelloService;
import com.vincent.demo.config.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class DemoApplication {

    @Value("${book.author}")
    private String bookAuthor;

    @Value("${book.name}")
    private String bookName;

    @RequestMapping("/")
    String index(){
        return "book name is :" + bookName + " and book author is: " + bookAuthor;
    }

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

(三)类型安全的配置(基于properties)

通过@ConfigurationProperties将properties属性和一个Bean及其相关属性关联、从而实现类型安全的配置

(1)添加配置,在application.properties上添加:

author.name=wyf
author.age=32

(2)类型安全的Bean,代码如下:

package com.vincent.demo.config;

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

/**
 * @author rw
 * @date 2018/12/17 下午9:50
 */
@Component
//加载properties文件内的配置,通过prefix属性指定properties的配置的前缀,通过locations指定properties文件的位置
@ConfigurationProperties(prefix = "author")
public class Author {

    private String name;

    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

(3)可以用@Autowired直接注入该配置

package com.vincent.demo;

import com.vincent.demo.config.Author;
import com.vincent.demo.config.HelloService;
import com.vincent.demo.config.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class DemoApplication {

    @Value("${book.author}")
    private String bookAuthor;

    @Value("${book.name}")
    private String bookName;

    @Autowired
    Author author;

    @RequestMapping("/")
    String index(){
        return "book name is :" + bookName + " and book author is: " + bookAuthor + " author.name is:" + author.getName();
    }public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

原文地址:https://www.cnblogs.com/vincentren/p/10226885.html

时间: 2024-10-11 09:01:19

springboot学习总结(一)外部配置(命令行参数配置、常规属性配置、类型安全的配置之基于properties)的相关文章

python学习笔记14-optparse真正的命令行参数

真正的命令行参数 -c/--chars:命令行选项 dest:为选项定义变量名,值characters就是'-c'选项的名字 default=False:characters的值False,意思是默认情况下命令不带-c选项 help:选项的解释说明部分 [[email protected] wc]# vim 9_optparse.py  #!/usr/bin/env python import sys, os from optparse import OptionParser parser = 

[Oracle] SQL*Loader 详细使用教程(2)- 命令行参数

sqlldr工具 SQL*Loader的客户端工具是sqlldr,在操作系统的命令行下输入sqlldr,后面不接任何参数,将显示帮助信息如下所示(所有命令行参数的简单描述及其默认值),所以你并不需要对下面的参数死记硬背,当你忘记它们时,可以通过这个方式快速查询. [plain] view plain copy print? Valid Keywords: userid -- ORACLE username/password control -- control file name log -- 

Android学习心得之 Linux下命令行Android开发环境的搭建

1. 前言2. Java以及Ant安装3. Android SDK安装4. Android工程的基础命令 一.前言 本篇博文记录了Linux下全命令行的Android开发环境的搭建,本文内容基于以下文章: http://zyqhi2010.blog.163.com/blog/static/171589378201261093235290/   ( Linux中搭建基于Emacs的Android开发环境 )https://linux.cn/article-5966-1.html   (打造一个全命

TensorFlow-谷歌深度学习库 命令行参数

程序的入口: tf.app.run tf.app.run( main=None, argv=None ) 运行程序,可以提供'main'函数以及函数参数列表.处理flag解析然后执行main函数. 什么是flag解析呢? 由于深度学习神经网络往往需要对各种Hyperparameter调优,比如学习率,卷积核参数设置等等, 这时使用命令行调参是非常方便的. 需要用到TensorFlow框架中的tf.app.flags组件 tf.app.flags组件中提供很多自带的设置不同类型命令行参数以及其默认

【NS-3学习】ns3-模拟基础:关键概念,日志,命令行参数

前言 本篇博客先介绍在仿真过程中会使用到的一些关键概念,然后介绍便于调试仿真脚本的常用技术:日志.命令行参数. 关键概念 节点 在因特网术语中,主机(终端)是指任何一台连接到网络的计算设备.ns-3并非一个专门的因特网模拟器,而是一个网络模拟器.为此不采用术语"主机",因为这个词太容易让人联想到因特网以及相关协议.因此,选用其他术语:节点. 可以将节点理解为一个空的机箱,我们可以向其中添加各种功能,将其变成我们想要的主机或者交换机. 节点由C++中的Node类来描述.Node类提供了用

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数] 较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源,如果采用物理文件作为配置源,我们可以选择不同的格式(比如XML.JSON和INI等) .如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义ConfigurationSour

【Python】 配置解析ConfigParser & 命令行参数解析optparser

ConfigParser ConfigParser包装了配置文件的读取和写入,使得python程序可以更加轻松操作配置文件了.这里的配置文件是指.ini的那种文件,基本格式如下 [section_a] a_key1 = a_value1 a_key2 = a_value2 [section_b] b_key1 = b_value1 b_key2 = b_value2 b_key3 = b_value3 将一个文件分隔成几个section,每个section中又有很多键值对,以这样的方式构建起配置

一个简单的零配置命令行HTTP服务器

http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) : npm install http-server Windows 下使用: 在站点目录下开启命令行输入 http-server 访问: http://localhost:8080 or http://127.0.0.1:8080  使用于package.json "scripts":

Linux 程序设计学习笔记----命令行参数处理

转载请注明出处.http://blog.csdn.net/suool/article/details/38089001 问题引入----命令行参数及解析 在使用linux时,与windows最大的不同应该就是经常使用命令行来解决大多数问题.比如下面这样的: 而显然我们知道C语言程序的入口是mian函数,即是从main函数开始执行,而main函数的原型是: int main( int argc, char *argv[] ); int main( int argc, char **argv );