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;
    }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM