1. 程式人生 > >SpringBoot學習[email protected]&am

SpringBoot學習[email protected]&am

文章目錄

@PropertySource:載入指定的配置檔案

首先我們建立一個配置檔案:
在這裡插入圖片描述
然後用@PropertySource指定它就可以了:

@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person"
) public class Person {

執行測試類:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot01HelloworldQuickApplicationTests {

    @Autowired
    Person person;
    @Test
    public void contextLoads() {
        System.out.println(person);
    }

}

控制檯列印:
在這裡插入圖片描述

@ImportResource:匯入Spring的配置檔案,讓配置檔案裡面的內容生效;

Spring Boot裡面沒有Spring的配置檔案,我們自己編寫的配置檔案,不能自動識別;
先建立一個spring的配置檔案:beans.xml
在這裡插入圖片描述
然後建立一個service:
在這裡插入圖片描述
然後把這個元件加入到beans.xml中去

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloService" class="com.nyh.springboot.service.HelloService"></bean> </beans>

想讓Spring的配置檔案生效,載入進來;用@ImportResource標註在一個配置類上

@ImportResource(locations = {"classpath:beans.xml"})
@SpringBootApplication
public class SpringBoot01HelloworldQuickApplication {

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

測試類:

	@Autowired
    org.springframework.context.ApplicationContext ioc;

    //測試容器中是否有這個元件
    @Test
    public void helloService(){
        boolean b = ioc.containsBean("helloService");
        System.out.println(b);
    }

控制檯列印:
在這裡插入圖片描述

然而在開發時這樣做很麻煩,要先寫一個配置檔案,然後再把配置檔案加進來

@Bean

簡便的方式:
SpringBoot推薦給容器中新增元件的方式;推薦使用全註解的方式
配置類@Configuration------>Spring配置檔案,用配置類來代替配置檔案
來寫一個配置類:放在config資料夾下
在這裡插入圖片描述
@Configuration:告訴SpringBoot當前類是一個配置類,就是替代spring配置檔案的

/*
* @Configuration:告訴SpringBoot當前類是一個配置類,就是替代spring配置檔案的
*
* 在配置檔案中用<bean></bean>新增元件,在配置類中用@Bean
*
* */
@Configuration
public class MyAppConfig {
    //@Bean的作用是將方法的返回值新增到容器中,容器中這個元件預設的id就是方法名
    @Bean
    //
    public HelloService helloService(){
        System.out.println("@Bean給容器中新增元件了");
        return new HelloService();
    }
}

然後把我們之前配置在主配置類上的@ImportResource(locations = {"classpath:beans.xml"})註釋掉,再執行測試類看能不能新增進去
在這裡插入圖片描述