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 密码 ...
随机推荐
- Python量化常用函数
# -*- coding: utf-8 -*- # @Author: fangbei # @Date: 2017-08-26 # @Original: price_str = '30.14, 29.5 ...
- 【JVM】线上应用故障排查
高CPU占用 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux ...
- .Net站点架构设计(八)測试
.Net站点架构时间(八)測试 一般而言.总体測试策略是:先针对部分系统进行性能及压力測试,得到各部分的峰值处理性能:再模拟总体流程測试,此时倒不用依照峰值跑,重点測试总体业务流程及业务预期负荷. 在 ...
- 【云安全与同态加密_调研分析(1)】国外云安全标准机构——By Me
在云计算领域,传统的信息安全管理标准如ITIL.ISO/IEC20000.ISO/IEC27001.27002.Cobit等被建议应用于云计算安全管理和控制框架的建立.此外,由于云计算本身区别于传统信 ...
- 模块讲解----sys
sys:跟python解释器相关的信息 #命令行参数list,第一个元素时程序本身路径 print(sys.argv) 注意:执行脚本时,可以传参数. #退出程序,正常退出时exit(0) sys.e ...
- matlab 保存图片的几种方式
最近在写毕业论文, 需要保存一些高分辨率的图片. 下面介绍几种MATLAB保存图片的 方式. 一. 直接使用MATLAB的保存按键来保存成各种格式的图片 你可以选择保存成各种格式的图片, 实际上对于 ...
- Linux服务器上监控网络带宽命令
本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以显示单个进程所使用的带 ...
- gcc __attribute__
GNU C 的一大特色就是__attribute__ 机制.__attribute__ 可以设置函数属性(Function Attribute ).变量属性(Variable Attribute )和 ...
- Found multiple occurrences of org.json.JSONObject on the class path:
Question: Found multiple occurrences of org.json.JSONObject on the class path: jar:file:/C:/Users/nm ...
- ViewFlipper
main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...