您的位置:首页 > 编程语言 > Java开发

Spring的配置相关知识(学习spring boot的预备知识)

2017-04-18 09:05 609 查看
  我们经常说的控制反转(Inversion of Control-IOC)和依赖注入(dependency injection-DI)在Spring环境下是等同的概念,控制反转是通过依赖注入实现的。所谓的依赖注入指的是容器负责创建对象和维护对象间依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖。

  使用@ComponentScan,自动扫描包名下所有使用@Service、@Component、@Repository和@Controller的类

  使用AnnotationConfigApplicationContext作为Spring容器,接受输入一个配置类作为参数。  

  Java配置

  Java配置是Spring 4.x推荐的配置方式,可以完全替代xml配置;Java配置也是Spring boot推荐的配置。

  java配置是通过@Configuration和@Bean来实现的

@Configuration声明当前类是一个配置类,相当于一个spring配置的xml文件

@Bean 注解在方法上,声明当前方法的返回值为一个Bean      

  spring EL和资源调用

  Spring EL,支持在xml和注解中使用表达式,类似于JSP的EL表达式语言。

  

1 @SpringBootApplication
2 @PropertySource("classpath:com/el/test.properties")
3 public class Ch522Application {
4
5      @Value("普通字符串")
6      private String normal;
7
8     @Value("#{systemProperties['os.name']}")
9     private String systemProperties;
10
11     @Value("#{T(java.lang.Math).random()*100}")
12     private String math;
13
14     @Value("classpath:com/el/test.text")
15     private Resource testFile;
16
17     @Value("http://www.baidu.com")
18     private String url;
19
20      @Value("${book.author}")
21      private String bookAuthor;
22
23      @Value("${book.name}")
24      private String bookName;    //注入配置文件需使用@PropertySource指定文件地址,若使用@Value注入,则要配置一个PropertySourcesPlaceholderConfigurer的Bean。注意,@Value("${book.name}")使用的是$而不是#。注入Properties哈可以从Environment中获得
25
26      @Autowired
27      private Environment Environment;
28
29      @Bean
30      public static PropertySourcesPlaceholderConfigurer propertyConfigure(){
31          return new PropertySourcesPlaceholderConfigurer();
32      }
33
34 }


profile

   Profile为在不同环境下使用不同的配置提供了支持(开发环境下的配置和生产环境下的配置)。

  三种方式

通过设定Environment的ActiveProfiles来设定当前context需要使用的配置环境。在开发中使用@Profile注解类或者方法,达到在不同情况下选择实例化不同的bean;

通过设定jvm的spring.profiles.active参数来设置配置环境;

web项目设置在Servlet的context parameter中;

事件(Application Event)

  spring的事件(Application Event)为Bean与Bean之间的消息通信提供了支持。当一个Bean处理完一个任务之后,希望另一个Bean知道并能做相应的处理。这时我们就需要让另一个Bean监听当前bean所发送的事件。

  步骤

自定义事件,继承ApplicationEvent类;

定义事件监听器,实现ApplicationListener<E>接口,E是上一步中创建的需要监听的事件,在类中使用onApplicationEvent方法对消息进行接收处理;

使用容器发布事件,使用ApplicationContext的publishEvent方法来发布;

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: