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


      我们经常说的控制反转(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所发送的事件。

      步骤

    1. 自定义事件,继承ApplicationEvent类;
    2. 定义事件监听器,实现ApplicationListener<E>接口,E是上一步中创建的需要监听的事件,在类中使用onApplicationEvent方法对消息进行接收处理;
    3. 使用容器发布事件,使用ApplicationContext的publishEvent方法来发布;

     

  • 相关阅读:
    C++ 11 lambda
    Win环境下的文件读写
    基于 Jenkins+Docker+Git 的CI流程初探
    python切片操作
    k8s 集群中的etcd故障解决
    Git 版本控制管理(二)
    Git 版本控制管理(一)
    Harbor 企业级镜像仓库搭建
    docker 数据管理
    docker 网络的几种模式
  • 原文地址:https://www.cnblogs.com/kevin443/p/6726093.html
Copyright © 2020-2023  润新知