main的 启动和配置文件的读取
Posted 凤鸣岐山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了main的 启动和配置文件的读取相关的知识,希望对你有一定的参考价值。
转载自:https://blog.csdn.net/weixin_40873368/article/details/78884690
(如侵权请留言,会删除)
1.建立简单的springboot项目
@SpringBootApplication public class Application { public static void main(String[] args) { //最简单直接的方式,调用SpringApplication类的静态方法run() SpringApplication.run(Application.class,args); } }
@SpringBootApplication注解是一个组合注解,是标注此类为springboot项目的启动入口
可用@EnableAutoConfiguration和@ComponentScan代替
@SpringBootApplication public class Application { public static void main(String[] args) { //方式二 SpringApplication springApplication=new SpringApplication(Application.class); springApplication.run(args); } } @SpringBootApplication public class Application { public static void main(String[] args) { //启动方式三 ConfigurableApplicationContext context = SpringApplication.run(Application.class,args); } }
注意run()方法的参数可以指定其他配置类,用@SpringBootConfiguration注解标注
比如:
//实体bean @Component public class User { public void say(){ System.out.println("Hello spring boot"); } } //配置类,管理bean @SpringBootConfiguration @ComponentScan public class MyConfig { @Bean public User user(){ return new User(); } } //启动入口 @SpringBootApplication public class Application { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(MyConfig.class,args); context.getBean(User.class).say(); } }
2.配置文件的读取
在springboot中,默认的配置文件为根目录下的application.properties,项目启动时程序会自动读取此配置文件
//默认的application.properties配置文件 my.name=wangpeicai ip.localhost=127.0.0.1 default.port=8080 tomcat.port=${default.port} //读取默认的application.properties配置文件 //1.方式一 @SpringBootApplication public class Application { public static void main(String[] args) { ConfigurableApplicationContext context=SpringApplication.run(Application.class,args); //通过getEnvironment(),getProperty()方法获取配置属性值 System.out.println(context.getEnvironment().getProperty("my.name")); } //2.方式二 /** * 获取配置文件的值的方式 * 方式一:直接注入Environment对象通过getProperty方法获取配置 * 方式二:通过@Value(${属性名})获取 */ @SpringBootConfiguration public class MyEnvironment{ @Autowired//通过注解直接注入对象 private Environment environment; @Value("${default.port}") private String defaultPort; @Value("${tomcat.port}") private String tomcatPort; //可以通过此方式给属性设置默认值 @Value("${my.port:1212}") private String myPort; public void show(){ System.out.println(environment.getProperty("ip.localhost")); System.out.println(defaultPort); System.out.println(tomcatPort); System.out.println(myPort); } } @SpringBootApplication public class Application { public static void main(String[] args) { ConfigurableApplicationContext context=SpringApplication.run(Application.class,args); context.getBean(MyEnvironment.class).show(); }
application.properties文件可以放在config目录下,springboot也会默认去读取此目录下的application.peoperties文件,在这就不多说关于设置自定义名字的默认配置文件以及自定义的默认目录了
//读取其他的配置文件,通过@PropertySource指定文件 //JdbcConfig.properties配置文件 driveClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/springboot username=root password=root @Configuration //@PropertySource("classpath:jdbcConfig.properties")//加载一个属性文件 @PropertySources({@PropertySource("classpath:jdbcConfig.properties"),@PropertySource("file:/W:/workspace_idea/springbootreadproperty/testConfig.properties")})//加载多个属性文件,file:/ 可以指定系统目录下的属性文件 public class JdbcConfig { @Value("${driveClassName}") private String driveClassName; @Value("${url}") private String url; @Value("${username}") private String username; @Value("${password}") private String password; //从系统目录中读取的文件属性值 @Value("${my.test}") private String myTest; public void showJdbcProperties(){ System.out.println("driveClassName="+driveClassName); System.out.println("url="+url); System.out.println("username="+username); System.out.println("password="+password); System.out.println("myTest="+myTest); } } @SpringBootApplication public class Application { public static void main(String[] args) { ConfigurableApplicationContext context=SpringApplication.run(Application.class,args); context.getBean(JdbcConfig.class).showJdbcProperties(); } //通过@ConfigurationProperties(prefix = "xxx")的方式指定读取前缀名为xxx的属性值 //wpc.properties配置文件 wpc.name=wpc wpc.age=100 wpc.sex=man @Component @PropertySource("classpath:wpc.properties") @ConfigurationProperties(prefix = "wpc")//可以通过前缀名注入属性 public class WpcConfig { private String name; private int age; private String sex; public void show (){ System.out.println("wpc.name="+name); System.out.println("wpc.age="+age); System.out.println("wpc.sex="+sex); } //可以通过get,set方法注入属性值 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
以上是关于main的 启动和配置文件的读取的主要内容,如果未能解决你的问题,请参考以下文章
solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例
Eclipse中src/main/resources配置文件启动问题
在Pyspark中使用时,具有静态文件依赖性的python包无法读取静态文件
JAVA maven创建web项目,把Spring框架配置文件放在src/main/resources中读取不到配置文件