《SpringBoot揭秘 快速构建微服务体系》读后感(一)
SpringIOC
IOC有两种方式:一种是DI,另一种是DL,即Dependency Lookup(依赖查找)。前者是当前软件实体被动接受其依赖的其他组件被IoC容器注入,而后者则是当前软件实体主动去某个服务注册地查找其依赖的那些服务

一个典型的代码片段:
public class App {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("...");
//...
MockService service = context.getBean(MockService.class);
service.doSomething();
}
}
context.getBean()实际上是DL的工作,而构建的任何一种IOC容器背后(比如BeanFactory或ApplicationContext)发生的事情,更多的是DI的过程 Spring IOC容器的依赖注入工作可以分为两个阶段:
第一阶段:收集注册
第一个阶段可以认为是构建和收集bean定义的阶段,在这个阶段中,我们可以通过XML或者Java代码的方式定义一些bean,然后通过手动组装或者让容器基于某些机制自动扫描的形式,将这些bean定义收集到Ioc容器中。 假设我们以XML配置形式来收集并注册单一bean,一般形式如下:
<bean id = “mockService” class="...mockServiceImpl">
...
</bean>
如果想批量收集并注册到IOc容器中,可以通过XML Shema形式的配置进行批量扫描:
<context:component-scan base-package="com...">
第二阶段:分析和组装

如今注解的方式比较盛行
JAVAConfig
(1)表达形式层面
基于xml配置方式是这样的:


而基于javaConfig的配置方式是这样的:

任何标注了@Configuration的java类定义都是一个JavaConfig配置类
(2)注册bean定义层面
基于XML的配置形式是这样的

而基于javaConfig的配置方式是这样的:

任何一个标注了@Bean的方法,其返回值将作为一个bean定义注册到Spring的IOC容器,方法名将默认成为该bean定义的id
(3)表达依赖注入关系层面
基于XML的配置形式是这样的


而基于javaConfig的配置方式是这样的:

如果一个bean的定义依赖其他bean,则直接调用对应JavaConfig类中依赖的bean的创建方法就可以了


Annotation
1、@CompoentScan

2、@PropertySource与@PropertySources


3、@Import 与@ImportResource

《SpringBoot揭秘 快速构建微服务体系》读后感(一)的更多相关文章
- Springboot揭秘-快速构建微服务体系-王福强-2016年5月第一次印刷
JavaConfig项目: spring IOC有一个非常核心的概念——Bean.由Spring容器来负责对Bean的实例化,装配和管理.XML是用来描述Bean最为流行的配置方式.Spring可以从 ...
- 《SpringBoot揭秘 快速构建微服务体系》读后感(五)
应用日志和spring-boot-starter-logging 快速web应用开发与spring-boot-starter-web 1.项目结构层面的约定
- 《SpringBoot揭秘 快速构建微服务体系》读后感(三)
SpringApplication:SpringBoot程序启动的一站式解决方案 深入探索SpringApplication执行流程 因为书上的版本是1.2的,比较老,这里参考http://blog. ...
- 《SpringBoot揭秘 快速构建微服务体系》读后感(二)
最简单的springBoot应用 package com.louis.test; import org.springframework.boot.SpringApplication; import o ...
- 《SpringBoot揭秘 快速构建微服务体系》读后感(四)
再谈自动配置 基于条件的自动配置 调整自动配置的顺序
- [高清] SpringBoot揭秘快速构建微服务体系
------ 郑重声明 --------- 资源来自网络,纯粹共享交流, 如果喜欢,请您务必支持正版!! --------------------------------------------- 下 ...
- SpringBoot 快速构建微服务体系 知识点总结
可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目 一.微服务 1.SpringBoot是一个可使用Java构建微服务的微框架. 2.微服务就是要倡导大家尽 ...
- SpringBoot揭秘:快速构建微服务体系
chapter 2: 饮水思源:回顾与探索Spring框架本质 IoC其实有两种方式,一种是DI(dependency Injection),一种是DL(dependency Lookup 依赖查找, ...
- 通过GeneXus如何快速构建微服务架构
概览 “微服务”是一个非常广泛的话题,在过去几年里,市面上存在着各种不同的定义. 虽然对这种架构方式没有一个非常精确的定义,但仍然有一些概念具有代表性. 微服务有着许多围绕业务能力.自动化部署.终端智 ...
随机推荐
- iOS_39_触摸解锁
终于效果图: 控制器: // // BeyondViewController.m // 39_触摸解锁 // // Created by beyond on 14-9-17. // Copyright ...
- linux 设置静态IP方法
本系统使用 linux redhat 7.2 1. 修改ip vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 2. 修改数据项如下 3. ...
- about gnu bash shell
1 定义字符串不需要引号 var=NONE echo $var ==>NONE 2 支持基本的整数计算 a=1 b=2 echo $((a+b)) ==>3 必须用$(()),双括号的形式 ...
- HTML 学习笔记 JQueryUI(Interactions,Widgets)
Draggable 允许使用鼠标移动元素(拖动) demo <html> <head> <meta charset="UTF-8" ...
- SAP 4代增强
*20170325 160000 以下之外, 还有:.替代, -用过一次:.BTE -没用过,需要学习: 第二代增强和第三代增强的差别: 1.Tcode 不同:第二代: CMOD 增强管理,SMOD ...
- Rocketmq消息持久化
本文编写,参考:https://my.oschina.net/bieber/blog/725646 producer Send()的Message最终将由broker处理,处理类为:SendMessa ...
- 部署nginx支持lua
nginx yum -y install gcc pcre pcre-devel openssl openssl-devel GeoIP GeoIP-devel lua lua-develwget ...
- matlab高亮显示选中的变量
第一步:点preference. 第二步:
- unbuntu下安装qq
由于Wine QQ一直没更新版本导致目前版本报版本过低无法使用,暂时先上UK官网的国际版Wine QQ,虽然功能没那么新,但稳定能用: 下载: 下载地址:http://www.ubuntukylin. ...
- 【LeetCode】062. Unique Paths
题目: A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). ...