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表达式语言。
@SpringBootApplication
@PropertySource("classpath:com/el/test.properties")
public class Ch522Application { @Value("普通字符串")
private String normal; @Value("#{systemProperties['os.name']}")
private String systemProperties; @Value("#{T(java.lang.Math).random()*100}")
private String math; @Value("classpath:com/el/test.text")
private Resource testFile; @Value("http://www.baidu.com")
private String url; @Value("${book.author}")
private String bookAuthor; @Value("${book.name}")
private String bookName; //注入配置文件需使用@PropertySource指定文件地址,若使用@Value注入,则要配置一个PropertySourcesPlaceholderConfigurer的Bean。注意,@Value("${book.name}")使用的是$而不是#。注入Properties哈可以从Environment中获得 @Autowired
private Environment Environment; @Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigure(){
return new PropertySourcesPlaceholderConfigurer();
} }
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方法来发布;
Spring的配置相关知识(学习spring boot的预备知识)的更多相关文章
- IP地址和子网划分学习笔记之《预备知识:进制计数》
一.序:IP地址和子网划分学习笔记开篇 只要记住你的名字,不管你在世界的哪个地方,我一定会去见你.——新海诚 电影<你的名字> 在我们的日常生活中,每个人的名字对应一个唯一的身(敏)份(感 ...
- WPF学习08:MVVM 预备知识之COMMAND
WPF内建的COMMAND是GOF 提出的23种设计模式中,命令模式的实现. 本文是WPF学习07:MVVM 预备知识之数据绑定的后续,将说明实现COMMAND的三个重点:ICommand Comm ...
- Spring全家桶相关文章汇总(Spring,SpringBoot,SpringData,SpringCloud)
因为Spring框架包含的组件比较多,写的博客内容也比较多,虽然有分专栏但是依然不方便查找,所以专门用一篇文章来记录相关文章,会不定期更新. 一.Spring 1.基础内容 Spring介绍 Sp ...
- 从零开始手写 spring ioc 框架,深入学习 spring 源码
IoC Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理. 创作目的 使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过 ...
- Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
一.Bean的Scope Scope描述的是Spring容器如何新建Bean实例的.Spring的Scope有以下几种,通过@Scope注解来实现. (1)Singleton:一个Spring容器中只 ...
- Spring 4 官方文档学习 Spring与Java EE技术的集成
本部分覆盖了以下内容: Chapter 28, Remoting and web services using Spring -- 使用Spring进行远程和web服务 Chapter 29, Ent ...
- WPF学习07:MVVM 预备知识之数据绑定
MVVM是一种模式,而WPF的数据绑定机制是一种WPF内建的功能集,两者是不相关的. 但是,借助WPF各种内建功能集,如数据绑定.命令.数据模板,我们可以高效的在WPF上实现MVVM.因此,我们需要对 ...
- ARMV8 datasheet学习笔记1:预备知识
1. 前言 ARMv8的架构继承以往ARMv7与之前处理器技术的基础; 除了支持现有的16/32bit的Thumb2指令外,也向前兼容现有的A32(ARM 32bit)指令集. 基于64bit的AAr ...
- 分享spring、spring boot、spring cloud一些学习资源,从基础知识到项目实战
1.spring注解驱动开发,学习spring boot和spring cloud必备知识 链接: https://pan.baidu.com/s/1xhULzLlpkERhoMi1G5Lgfg 密码 ...
随机推荐
- netty 网关 flume 提交数据 去除透明 批处理 批提交 cat head tail 结合 管道显示行号
D:\javaNettyAction\NettyA\src\main\java\com\test\HexDumpProxy.java package com.test; import io.netty ...
- Spark源码分析 – SparkEnv
SparkEnv在两个地方会被创建, 由于SparkEnv中包含了很多重要的模块, 比如BlockManager, 所以SparkEnv很重要 Driver端, 在SparkContext初始化的时候 ...
- python基础-第十篇-10.2CSS基础
CSS是Cascading Style Sheet的简称,中文为层叠样式表 属性和属性值用冒号隔开,以分号结尾 引入方式 行内式--在标签的style属性中设定CSS样式 <body> & ...
- Appium+python移动端自动化测试-环境搭建(一)
搭建所在系统环境:Windows7版本64位系统 一.环境准备 jdk8.0.151 android-sdk_r20.3.4-windows python3.5 appium1.4.16.1 Node ...
- python爬虫系列(1)——一个简单的爬虫实例
本文主要实现一个简单的爬虫,目的是从一个百度贴吧页面下载图片. 1. 概述 本文主要实现一个简单的爬虫,目的是从一个百度贴吧页面下载图片.下载图片的步骤如下: 获取网页html文本内容:分析html中 ...
- swagger多个分组代码展示
/** * api信息 * * @param name 标题 * @param description 描述 * @param version 版本 * @return */ private ApiI ...
- python学习笔记(十七)网络编程之urllib模块
如何用python打开一个网站或者请求一个接口呢,我们在这篇博客介绍一下. 首先我们得导入一个urllib模块,这个模块是python自带的标准模块,直接导入就能使用,但是用起来不方便,先看个简单的打 ...
- Linux:Centos7升级内核(转)
更新前,内核版本为: uname -r 3.10.0-327.10.1.el7.x86_64 升级的方法: 1.导入key rpm --import https://www.elrepo.org/RP ...
- 网页采集利器 phpQuery
网页采集利器 phpQuery 2012-02-28 11:43:24| 分类: php|举报|字号 订阅 在网页采集的时候,通常都会用到正则表达式.但是有时候对于正则不太好的同学,比如我, ...
- Mac下的Mysql无法登陆的问题
以下是还原root权限和更改root密码的最便捷方法. 1:装mysql workbench .可视化界面直接操作. 2:苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭my ...