文档章节

Spring笔记(2)

husthang
 husthang
发布于 2017/02/17 10:52
字数 842
阅读 18
收藏 0

IOC与DI

  1. 基本概念
    • 控制反转(Inversion of Control)是一种是面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。其基本思想是:借助于“第三方”实现具有依赖关系的对象之间的解耦。实现控制反转主要有两种方式:依赖注入依赖查找。两者的区别在于,前者是被动的接收对象,在类A的实例创建过程中即创建了依赖的B对象,通过类型或名称来判断将不同的对象注入到不同的属性中,而后者是主动索取响应名称的对象,获得依赖对象的时间也可以在代码中自由控制。
    • 依赖注入就是将实例变量传入到一个对象中去(Dependency injection means giving an object its instance variables)。
  2. ICO与DI的关系
    • 依赖注入是一种设计模式
    • 控制反转是一种设计原则,一种编程思想.
    • IoC框架使用依赖注入作为实现控制反转的方式,但是控制反转还有其他的实现方式,比如依赖查找,所以不能将控制反转和依赖注入等同。
  3. Spring中的依赖注入
    • Spring依赖注入的两种方式:setter方法注入(setter injection)和构造器注入(constructor injection)
  4. 参考

Spring中Bean的基本装配

  1. 两种注入方式,构造器注入(对应xml c空间),属性的settr方法注入(对应xml p空间)
  2. 基于xml装配
    • 构造器注入: c-命名空间;元素:<constructor-arg ref="bean-id"/>
    • setter注入: p-命名空间;元素:<property name="属性名" ref="bean-id"/>
    • 装配集合(此时命名空间无法做到),需用元素
  3. 基于注解装配
    • Spring3基于注解实现Bean依赖注入支持如下四种注解
      • spring自带依赖注入注解: Spring自带的一套依赖注入注解;
      • JSR-250注解:Java平台的公共注解,是Java EE 5规范之一,在JDK6中默认包含这些注解,从Spring2.5开始支持。
      • JSR-330注解:Java 依赖注入标准,Java EE 6规范之一,可能在加入到未来JDK版本,从Spring3开始支持;
      • JPA注解:用于注入持久化上下文和实体管理器。
    • Spring自带注解
      • @Required: 依赖检查,只能放置在setter方法上,要求xml中配置该Bean时必须注入.
      • @Autowired 自动装配,默认是根据类型注入,可以用于构造器、字段、方法注入(不只settr方法)
      • @Qualifier 与 Autowired 配合根据名字装配;(还能进行更细粒度的控制)
      • @Component: 取代 声明bean, 用在要被自动扫描和装配的类上(类级别)
      • @Bean , 声明一个single bean, 用法方法上(方法级别)
    • JSR-250注解
      • @Resource:自动装配,默认根据类型装配,如果指定name属性将根据名字装配
    • SR-330注解
      • @Inject:等价于默认的@Autowired
      • @Name,类似@Component
  4. Bean的生命周期

Bean高级装配

  1. Bean的作用域
  2. Spring profile
  3. 条件化的Bean声明
  4. Spring表达式语言(SpEL)

示例代码及单元测试

  1. @RunWith注解
  2. @Rule注解
  3. Assert用法
  4. System Rules用法
  5. 代码

© 著作权归作者所有

husthang
粉丝 14
博文 23
码字总数 17164
作品 0
武汉
程序员
私信 提问
spring boot整合dubbo

github: https://github.com/Athlizo/spring-dubbo-parent 码云: https://git.oschina.net/null5843382/spring-dubbo-parent 相关文档: Spring Dubbo 开发笔记(一)——概述: Spring Dub......

lizo
2017/03/01
1K
6
springmvc+mybatis学习笔记(汇总)

springmvc+mybatis学习笔记(汇总) 标签 : springmvc mybaits [TOC] 笔记分为两大部分:mybatis和springmvc mybatis springmvc 笔记内容主要是mybatis和springmvc的一些基本概念和使用方法,...

brianway
2016/03/30
2.3K
2
springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建

springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建) 标签: springmvc mybatis [TOC] 本文主要展示如何在intellij IDEA中通过maven构建springmvc+mybatis框架的开发环境。 需求...

brianway
2016/03/10
507
0
Spring Boot Banner自定义,让你的应用与众不同

点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达! TIPS 本文基于Spring Boot 2.1.4,理论支持Spring Boot所有版本。 相信玩过Spring Boot的童鞋一定在启动日志中见过类似如下的内容。...

IT牧场
05/08
0
0
《Spring Recipes》第四章笔记3:Refreshing Beans from Sc...

《Spring Recipes》第四章笔记3:Refreshing Beans from Scripts 问题 脚本经常刷新,需要Spring容器自动探测变化和刷新。 解决方案 使用<lang>元素的refresh-check-delay属性,Spring容器可...

LiJIaming
2012/05/25
77
0

没有更多内容

加载失败,请刷新页面

加载更多

Netty整合Protobuffer

现在我们都知道,rpc的三要素:IO模型,线程模型,然后就是数据交互模型,即我们说的序列化和反序列化,现在我们来看一下压缩比率最大的二进制序列化方式——Protobuffer,而且该方式是可以跨...

算法之名
24分钟前
14
0
如何用C++实现栈

栈的定义 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压...

BWH_Steven
43分钟前
4
0
编程作业20190210900169

1编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。 #include <stdio.h>#include <stdlib.h> int main(){ char firstName[20]; char lastName[20]; print......

1李嘉焘1
55分钟前
12
0
补码的优点及原理分析

只讨论整数 1.计算机内部为什么没有减法器? 减法运算本身其实就是加法,如x - y即x +(-y),所以只需要将负数成功表示出来并可以参加加法运算,那加法器就可同时实现“+”和“-”的运算。这...

清自以敬
今天
76
0
Docker 可视化管理 portainer

官网安装指南: https://portainer.readthedocs.io/en/latest/deployment.html docker-compose.yml 位置,下载地址:https://downloads.portainer.io/docker-compose.yml...

Moks角木
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部