@PropertySource

加载指定配置文件

  1. /**
  2. * 单独一个@ConfigurationProperties注解,表示从默认的全局配置文件中获取值注入
  3. * @PropertySource则是修改默认的全局配置文件,让@ConfigurationProperties去指定的配置文件获取值注入
  4. **/
  5. @PropertySource(value = {"classpath:person.properties"})
  6. @Component
  7. @ConfigurationProperties(prefix = "person")
  8. public class Person {
  9. // something
  10. }

@ImportResource

用于导入Spring的XML配置文件,让该配置文件中定义的bean对象加载到Spring容器中。
该注解必须加载Spring的主程序入口上。

  1. // 主程序代码
  2. @ImportResource(locations = {"classpath:beans.xml"})
  3. @SpringBootApplication
  4. public class HelloWorldApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(HelloWorldApplication.class, args);
  7. }
  8. }
  9. // HelloWorld.java POJO类代码
  10. public class HelloWorld {
  11. private String name;
  12. // get/set/toString 方法
  13. }
  1. <!--beans.xml配置文件代码-->
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <beans xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <bean id="helloWorld" class="com.gmd.beans.HelloWorld">
  7. <property name="name" value="Hello World"></property>
  8. </bean>
  9. </beans>

实际上,Spring并不推荐你使用这种方式注入bean,Spring推荐使用全注解的方式添加组件,即使用@Configuration注解和@Bean注解的方法。

@Configuration 和 @Bean

  1. /**
  2. * @Configuration 指明当前类是一个配置类,就是来替代之前的xml配置文件
  3. * 在配置文件中用<bean><bean/>标签添加组件,这里这使用@Bean
  4. **/
  5. @Configuration
  6. public class MyApplicationConfig {
  7. // 将方法的返回值添加到容器中,容器中这个组件默认的id就是该方法名
  8. @Bean
  9. public HelloWorld helloOne(){
  10. HelloWolrd helloworld = new HelloWorld();
  11. hellowrold.setName("Hello World One.");
  12. return helloworld;
  13. }
  14. @Bean
  15. public HelloWorld helloTwo(){
  16. HelloWolrd helloworld = new HelloWorld();
  17. hellowrold.setName("Hello World Two.");
  18. return helloworld;
  19. }
  20. }
  21. // HelloWorld.java POJO类代码
  22. public class HelloWorld {
  23. private String name;
  24. // get/set/toString 方法
  25. }
  26. // Test方法
  27. @Qualifier("helloTwo") // 如果该类注入了多个bean,则需要通过该注解告诉Spring你需要使用那个bean
  28. @Autowired
  29. private HelloWorld helloWorld;
  30. @Autowired
  31. private ApplicationContext applicationContext;
  32. @Test
  33. public void TestHelloWorld(){
  34. System.out.println(helloWorld);
  35. Object helloOne = applicationContext.getBean("helloOne");
  36. System.out.println(helloOne);
  37. }