精华内容
下载资源
问答
  • IDEA WEB项目启动不加载application.properties配置文件,yml配置文件是否也会不加载未尝试,如果有遇到的可以尝试一下。
  • activiti和springboot整合只使用application.properties配置文件,解决了jdbc长时间待机连接被收回报错。使用springProcessEngineConfiguration对activiti管理
  • 主要介绍了详解spring boot 使用application.properties 进行外部配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了Spring Boot中配置文件application.properties使用及spring boot读取application.properties文件的方式,需要的朋友参考下吧
  • application.properties配置大全---- application.properties配置大全
  • .properties配置文件 @Value方式 @ConfigurationProperties方式 配置文件的位置 使用 spring.profiles.active来分区配置 SpringBoot版本:2.1.1 前言 在上篇入门教程中,一点配置文件的影子都没见到,因为...

    目录

    新建子工程

    .properties配置文件

    @Value方式

    @ConfigurationProperties方式

    配置文件的位置

    使用 spring.profiles.active来分区配置


    SpringBoot版本:2.1.1

    前言

    上篇入门教程中,一点配置文件的影子都没见到,因为Spring Boot使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

    新建子工程

    进入正题,在上次的父工程下新建子工程SpringBoot_PropertiesFile,只记录配置文件的使用,所以这里建的是jar包,在pom文件中就加入spring-boot-starter依赖,官网描述是:核心启动器,包括自动配置支持,日志记录和YAML。

    下面是pom文件:

    <project xmlns="http://maven.apache.org/POM/4.0.0"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<parent>
    		<groupId>com.eastcom</groupId>
    		<artifactId>SpringBoot_Demo</artifactId>
    		<version>0.0.1-SNAPSHOT</version>
    	</parent>
    	<artifactId>SpringBoot_PropertiesFile</artifactId>
    	
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter</artifactId>
    		</dependency>
    	</dependencies>
    </project>

    .properties配置文件

    项目建完了再创建配置文件,在resources下新建application.properties配置文件,在配置文件中你可以用spring.然后快捷键稍微过一眼配置项,这是官网列出来的常用应用属性配置:官网常用应用属性配置

    Spring Boot支持.properties和.yml形式的配置文件,.properties形式配置文件优先级高于.yml形式的配置文件,默认的配置文件是application.properties

    当然你也可以自定义配置项,比如下面这样在配置文件中加三条配置:

    那么如何读取配置呢?两种方式分别用到@Value和@ConfigurationProperties这两个注解。

    @Value方式

    新建java类MyConfiguration_Value,代码如下:

    @Component
    public class MyConfiguration_Value {
    	
    	//@Value默认要有配置项,配置项可以为空,若没有配置项要指定默认值,:后的boot为默认值
    	@Value("${com.eastcom.name:boot}")
    	private String name;
    	
    	@Value("${com.eastcom.version}")
    	private String version;
    	
    	@Value("${com.eastcom.listName}")
    	private List<String> listName;
    
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getVersion() {
    		return version;
    	}
    	public void setVersion(String version) {
    		this.version = version;
    	}
    	public List<String> getListName() {
    		return listName;
    	}
    	public void setListName(List<String> listName) {
    		this.listName = listName;
    	}
    	@Override
    	public String toString() {
    		return "MyConfiguration_Value [name=" + name + ", version=" + version + ", listName=" + listName + "]";
    	}
    }

    注解中放的就是配置项,@Value默认要有配置项,配置项可以为空,若没有配置项要指定默认值,:(冒号)后的boot为默认值。

    新建Application主类,代码如下:

    @SpringBootApplication
    public class Application {
    	public static void main(String[] args) {
    		ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
    		MyConfiguration_Value myConfiguration_Value = context.getBean(MyConfiguration_Value.class);
    		System.out.println(myConfiguration_Value.toString());
    		context.close();
    	}
    }

    运行看一下结果,可以看到配置已经读到了。

    再试一下@Value的默认值,把name在配置文件中去掉,在运行,可以看到name变成了boot。

    @ConfigurationProperties方式

    把name重新加上,新建MyConfiguration_Properties类,代码如下:

    @Component
    @ConfigurationProperties(prefix="com.eastcom")
    public class MyConfiguration_Properties {
    	
    	private String name;
    	
    	private String version;
    	
    	private List<String> listName;
    
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getVersion() {
    		return version;
    	}
    	public void setVersion(String version) {
    		this.version = version;
    	}
    	public List<String> getListName() {
    		return listName;
    	}
    	public void setListName(List<String> listName) {
    		this.listName = listName;
    	}
    	@Override
    	public String toString() {
    		return "MyConfiguration_Properties [name=" + name + ", version=" + version + ", listName=" + listName + "]";
    	}
    	
    }

    @ConfigurationProperties的prefix属性值是配置项前缀,然后类中的属性名就是配置项的名字,在Application类中添加代码,代码如下:

    @SpringBootApplication
    public class Application {
    	public static void main(String[] args) {
    		ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
    		MyConfiguration_Value myConfiguration_Value = context.getBean(MyConfiguration_Value.class);
    		System.out.println(myConfiguration_Value.toString());
    		
    		MyConfiguration_Properties myConfiguration_Properties = context.getBean(MyConfiguration_Properties.class);
    		System.out.println(myConfiguration_Properties.toString());
    
    		context.close();
    	}
    }

    再启动项目,输入如下,可以看到两种方式都成功了。

    @Value适合配置少单个注入,@ConfigurationProperties适合全量或批量注入。

    配置文件的位置

    配置文件的位置也可以放到不同的位置,当然,不同的位置配置文件读取的优先级肯定也不同,下面是配置文件可以放置的四个位置,优先级依次从高到低

    1. file:./config/                项目当前路径下的config子目录
    2. file:./                           项目当前目录
    3. classpath:/config/       类路径下的config目录
    4. classpath:/                  类路径下

    在这四个位置新建四个配置文件,然后在项目中看一下这四个位置,图中数字跟上面数字对应。

    然后在每一个配置文件中添加一个配置com.eastcom.index,值跟图中的数字对应,分别是1,2,3,4。另外我把每个配置文件中都加上了上面的三个自定义配置,并把版本号稍微改成跟顺序对应。如下:

    在Application类添加代码,如下:

    @SpringBootApplication
    public class Application {
    	public static void main(String[] args) {
    		ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
    		MyConfiguration_Value myConfiguration_Value = context.getBean(MyConfiguration_Value.class);
    		System.out.println(myConfiguration_Value.toString());
    		
    		MyConfiguration_Properties myConfiguration_Properties = context.getBean(MyConfiguration_Properties.class);
    		System.out.println(myConfiguration_Properties.toString());
    		
    		System.out.println(context.getEnvironment().getProperty("com.eastcom.index"));
    		context.close();
    	}
    }

    控制台输出信息:

    很明显,读取的是项目当前路径下的config子目录中的配置,其余的就不一一试了。

    使用 spring.profiles.active来分区配置

    上一篇博客中有讲到spring-boot-starter-parent提供的特性,其中就包括能够识别application.properties和application.yml类型的文件,同时也能支持profile-specific类型的文件(例如: application-dev.properties 和 application-dev.yml,这个功能可以更好的配置不同生产环境下的配置文件)。
    新建三个配置文件,分别为application-dev.properties(开发)、application-test.properties(测试)、application-prod.properties(生产)。

    可以使用spring.profile.active配置项在application.properties配置文件中指定哪些配置文件处于活动状态,可以指定多个。

    新建一个配置类MyActiveProfileConfig等会要用,代码如下:

    @Configuration
    public class MyActiveProfileConfig {
    	
    	@Bean
    	public Runnable create() {
    		System.out.println("default");
    		return ()->{};
    	}	
    	@Bean
    	@Profile("dev")
    	public Runnable createDev() {
    		System.out.println("dev");
    		return ()->{};
    	}
    	@Bean
    	@Profile("prod")
    	public Runnable createProd() {
    		System.out.println("prod");
    		return ()->{};
    	}
    	@Bean
    	@Profile("test")
    	public Runnable createTest() {
    		System.out.println("test");
    		return ()->{};
    	}
    }

    @Profile("dev")表示只有当启动的配置是开发环境的配置是才创建这个bean,@Profile也可以放在类上,意思是一样的,只有当启用某个配置文件是才去创建这个配置类中的bean。

    为了跟上面说的分开,再重新创个主类AppActiveProfile吧,强迫症,全混一起感觉太乱了。代码如下:

    @SpringBootApplication
    public class AppActiveProfile {
    	public static void main(String[] args) {
    		SpringApplication application = new SpringApplication(AppActiveProfile.class);
    //		application.setAdditionalProfiles("dev","prod");
    		ConfigurableApplicationContext context = application.run(args);
    		context.close();
    	}
    }

    运行看打印信息。上面我设置启用的是dev和test,可以看到已经启用了,@Profile注解是生效了的。

    当然你还可以通过代码设置启用哪些配置文件,把AppActiveProfile类中注释的代码取消注释,setAdditionalProfiles(String... profiles)方法同样可以设置多个值,参数是String,...表示可以有多个,自行去尝试。

    至此,Sping Boot 配置文件就讲完了,有不足或者错误的地方欢迎指正。

    项目源码:https://github.com/AiHePing/SpringBoot_Demo

     

    展开全文
  • application.properties配置失效

    千次阅读 2019-06-04 14:02:06
    虽然后来将module移除掉了,但是由于加入module的时候会自动将此项目打包方式由jar变成pom,然后添加modules标签,导致以pom方式打包的项目不能扫描到application.properties的,而且mvn package的时候不能打成jar包...

    解决办法:

    将pom文件中的

    <packaging>pom</packaging>

    换成

    <packaging>jar</packaging>

     

    原因是不小心在子模块中加入了一个module,虽然后来将module移除掉了,但是由于加入module的时候会自动将此项目打包方式由jar变成pom,然后添加modules标签,导致以pom方式打包的项目不能扫描到application.properties的,而且mvn package的时候不能打成jar包。

     

    补充1:遇到问题的时候要尽快猜测可能的问题,然后面向baidu/google编程。

    补充2:IDEA启动SpringBoot加启动参数的两种方式(多个参数使用空格隔开):

    --spring.profiles.active=peer1 --server.port=13111

    或者

    -Dspring.profiles.active=peer1 -Dserver.port=13111

    展开全文
  • 开一个springboot的web程序,需要配一下端口,结果application.properties里面的配置不生效,找了几个办法,总结一下。 参考文章 https://blog.csdn.net/qq_37651267/article/details/99305176 ...

    前言

    开一个springboot的web程序,需要配一下端口,结果application.properties里面的配置不生效,找了几个办法,总结一下。

    参考文章

    https://blog.csdn.net/qq_37651267/article/details/99305176

    https://blog.csdn.net/chenaima1314/article/details/88139417

    解决方案

    1、可能是打包时application.properties没有在target下面。这种情况在pom 配置的 build里面加上 resources :

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    2、配置的时候把它配置成了pom,改成jar就可以。

    原句:

    <packaging>pom</packaging>

    改为jar:

    <packaging>jar</packaging>

    3、直接在运行时指定相关配置。

    然而这两种方案都没有解决我的问题。我的target下面也有application.properties。不知道是啥问题了,干脆在运行命令里面加上端口号配置吧。

    反正我的application.properties只配了一个端口号,也不多。。。

    application.properties文件内容如下:

    在启动命令里加上 --server.port=9999:

    nohup java -Djava.ext.dirs=/home/ll/run/data/lib -jar /home/zhk/run/data/data-0.0.1-SNAPSHOT.jar --server.port=9999 > /home/ll/log/data.log &

    运行成功,端口改变成功。

     

     

     

     

     

    展开全文
  • SpringBoot中的application.properties配置

    千次阅读 2020-07-17 18:30:12
    在SpringBoot中有两种配置,一个是properties,一个是yml,他们的配置内容格式不同,但他们的作用是相同的。 properties和yml的区别: 1、yml相对于properties更简洁 2、yml中的数据是有序的,properties中的数据...

    在SpringBoot中有两种配置,一个是properties,一个是yml,他们的配置内容格式不同,但他们的作用是相同的。

    properties和yml的区别:

    1、yml相对于properties更简洁

    2、yml中的数据是有序的,properties中的数据是无序的

    位置问题

    在SpringBoot中一共有四个地方可以存放application.properties文件

    1、当前项目根目录下的config目录下

    2、当前项目的根目录下

    3、resources目录下的config目录下

    4、resources目录下

    按照如上的顺序,四个配置文件的优先级一次降低,如下:

    这四个位置是默认的位置,即SpringBoot启动默认会从这四个位置 按照顺序来加载配置,但是,这也不是绝对的,我们也可以在项目启动时自定义配置文件位置。

    例如,现在在resources下创建一个aaa目录,目录存放一个application.properties文件,那么正常情况下当我们启动SpringBoot项目时,这个配置文件是不会被自动加载的,我们可以通过spring.config.location属性来手动的指定配置文件的位置,指定完成之后,系统会自动去指定目录下查找application.properties文件

    此时项目启动,系统就会自动加载你所自定义配置的配置文件,如果项目已经打成了jar包,在启动命令中加入位置参数即可

    java -jar XXX.jar -- spring.config.location=classpath:/aaa/ 

    文件名问题

    对于application.properties而言,他不一定非要叫application,但是项目默认是去加载名问application的配置文件,如果不是application也是可以的,必须要明确指定配置文件的文件名。

    方式和指定路径一致,只不过此时的key是spring.config.name.

    首先我们在resources目录下创建一个app.properties文件,然后再idea中指定配置文件的文件名

    配置好文件名之后,系统默认还是从四个位置先后加载,当然也可以指定文件的位置,那就需要指定spring.config.location,文件名和文件路径可以同时指定。

    普通的属性注入

    1、新建Book对象

    2、在application.properties中定义

     

    3、在book对象中增加@Value注解注入value值

    注意:Book对象本身也要交给Spring容器去管理,如果Book没有交给Spring容器那么Book中的属性也无法从Spring容器中获取到值。

    配置完成后,在controller中注入Book对象,启动项目,就可以看到属性已经注入到对象中了。 

    乱码请先忽略。

    一般来说,我们在application.properties中主要存放系统的配置,这种自定义的配置不建议放在该文件中,可以自定义properties文件来存放自定义配置

    book.properties配置

     此时项目启动并不会加载该配置文件,如果是在xml中配置,可以如下方式引用properties文件

    <context:property-placeholder location="classpath:book.properties"/>

    如果是在java配置中,可以通过@PropertySource来引入配置

    这时候项目启动,就会自动加载book.properties文件,这只是Spring中属性注入的一个简单的用法。和SpringBoot并没有什么关系

    类型安全的属性注入 

    SpringBoot引入了类型安全的属性注入,如果采用Spring中的配置方式,当配置的属性非常多的时候工作量就非常大了,而且容易出错。使用类型安全注入可以有效的解决这个问题。

    展开全文
  • server.servlet.context-path 和 server.context-path :配置项目的上下文...server.context-path是spring2.0以下的配置方式,server.servlet.context-path是spring2.0以上的配置方式server.port:项目的端口配置...
  • application.properties配置文件

    千次阅读 2019-11-23 12:10:43
    application.properties配置文件 数据库 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/project?characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=admin spring....
  • Spring程序会按优先级从下面这些路径来加载application.properties配置文件 当前目录下的/config目录 当前目录 classpath里的/config目录 classpath 跟目录 因此,要外置配置文件就很简单了,在jar...
  • springboot的application.properties配置文件的JDBC的相关配置. spring.datasource.name=数据源的名称。 spring.datasource.type=连接池类型 spring.datasource.driver-class-name=com.mysql.jdbc.Driver。JDBC 驱动...
  • Java获取application.properties配置参数

    千次阅读 2019-08-08 17:57:31
    核心code如下: ...import java.util.Properties; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.su...
  • 实际开发中若需要读取配置文件application.properties中的配置,代码如下。例:读取配置文件中name属性配置值:  代码如下: import org.springframework.core.io.ClassPathResource; import org.spring...
  • spring boot项目application.properties配置不生效简单排查 https://blog.csdn.net/chenaima1314/article/details/88139417 <build> <resources> <resource> <directory>src/main/java&...
  • 最近因项目原因,需要将springboot项目的properties文件改为自定义名称,在查看一些资料后最终解决,特记录一下! 参考资料:...
  • 主要介绍了SpringBoot读取properties或者application.yml配置文件中的数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • IDEA设置Properties配置文件的编码
  • //环境准备完成事件,开始解析application.properties配置文件 onApplicationEnvironmentPreparedEvent((ApplicationEnvironmentPreparedEvent) event); } //暂不关注这里 if (event instanceof ...
  • @[T参考此文OC](这里写自定义目录标题) 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法...
  • 在spring启动加载完配置后,我们自定义一个Environment后置处理器,来修改配置。 背景知识: 1、spring中配置可以从Environment中获取。 2、ApplicaitonContext接口包含getEnvironment功能。 3、...
  • Network Related Configurations ***************# ### If prefer hostname over ip for Nacos server addresses in cluster.conf: # 从cluster.conf配置文件中获取IP(集群模式) # nacos.inetutils.prefer-...
  • 最近用Idea做web开发,application.properties配置文件遇到不少问题,发现要么没有高亮显示,要么缺少部分提示,翻阅了很多帖子,现在总结下解决的方法: 1、如果是全部都没有提示,可以看看文件图标,图标不是绿...
  • 将 springboot 应用的 启动类 入口 main方法中的默认代码 SpringApplication.run(Application.class, args); 改为 new SpringApplicationBuilder(Application.class).properties...通过 properties 方法设置 配置属...
  • 我在创建一个spring boot项目的时候遇到了无法读取...我们将application.properties修改一下,改一下端口号: 但是当启动的时候端口号却显示使用了8080端口,没有读取到配置文件信息: 我在网上找了一些资料,有...
  • 利用application.properties配置文件定义变量,在编写代码时可利用Spring占位符可以很方面的使用, 如@Value注解。 但是在application.properties配置文件内部, 变量之间如何引用呢? 考虑一种场景: 我们定义多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 259,614
精华内容 103,845
关键字:

application.properties配置