主要内容:

  • 声明Bean
  • 构造器注入和Setter方法注入
  • 装配Bean
  • 控制bean的创建和销毁

Spring装配Bean的3种机制

  • 在XML中进行显式配置
  • 在Java中进行显式配置
  • 隐式的bean发现机制和自动装配

1、自动化装配Bean,
组件扫描:spring会自动发现应用上下文所创建的Bean

自动化装配:Spring自动满足bean之间的依赖

例:CD需要插入Cd播放器中,那么cd才可以播放或者或者说注入,以spring编写

定义Cd的概念,实现CompactDisc接口

package nh.spring.ioc.beans;/*** Created by niuh on 11/2/2016.*/
public interface CompactDisc {void play();
}

Cd可以有很多实现类,比如某人的某个专辑,用@Component注解完成实现类

package nh.spring.ioc.beans;import org.springframework.stereotype.Component;/*** Created by niuh on 11/2/2016.*/@Component
public class sgtPappers implements CompactDisc {private String title = "nice!!!!!!!";private String artist = "heng";@Overridepublic void play() {System.out.print("title is " + title + " by " + artist);}
}

@Component注解,表面该类是个组件类,告知Spring要为这个类自动创建bean,不过默认组件扫描是不启用的,利用@ComponentScan启用组件扫描

package nh.spring.ioc.beans;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;/*** Created by niuh on 11/2/2016.**/@Configuration
@ComponentScan
public class CdPlayConfig {
}

整理一下,类CdPlayConfig在实例化时,通过java定义的spring装配规则,@ComponentScan注解在Spring中启用组件扫描,默认扫描与配置类相同的包,以及子包。查找所有带有@Component注解的类,这样就能找到CompactDisc,并为其创建一个Bean,完成组件扫描与自动装配。

在上面代码中Spring应用上下文会为Bean自动分配一个id,规则为首字母小写,如果期望可以自定义id,则如下:

@Component("myId")

也可以使用java依赖注入中提供@Named设置ID

@Named("myId")

通过ComponentScan的basePackages属性设置自动扫描的包

@ComponentScan(basePackages = "nh.spring.ioc")

最后通过注解为bean实现自动装配

package nh.spring.ioc.beans;import org.springframework.beans.factory.annotation.Autowired;/*** Created by niuh on 11/2/2016.*/
public class CDplay implements MediaPlayer {private CompactDisc cd;@Autowiredpublic CDplay(CompactDisc cd) {this.cd = cd;}@Overridepublic void play() {cd.play();}
}

使用Spring应用上下文寻找匹配摸个bean需求的其他bean,例子中表面Spring创建Cdplay时,会通过构造器来进行实例化并要找到一个CompactDisc类型的bean;

转载于:https://www.cnblogs.com/hylinux/p/6023850.html

【Spring实战4】04---装配Bean(自动装配)相关推荐

  1. 《Spring实战》系列之Bean的装配-Days01

    1 自动化装配bean Spring通过两个方面实现对bean的自动装配 1 ) 组件扫描(component scaning):Spring会自动发现Spring上下文中的bean 2 ) 自动装配 ...

  2. spring Bean自动装配

    spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...

  3. Spring(二)--------Spring配置、DI依赖注入、Bean自动装配

    Spring(二)--------Spring配置.DI依赖注入.Bean自动装配 5.Spring配置 5.1 别名 设置别名:第一种方式alias <!--其中name为ID的对应值--&g ...

  4. spring框架学习(一):Bean的装配方式 ——基于注解的装配、自动装配

    Bean的装配方式 基于注解装配 常用注解: 总结 自动装配 [序言] 在前面的例子中我们就可以看到了使用基于XML方式的缺点了:如果应用中有较多的Bean对象,则会导致xml文件过于臃肿,给后续的维 ...

  5. Spring | Bean自动装配详解

    个人主页:BoBooY的CSDN博客_Java领域博主 前言:上节我给大家讲解了Spring的依赖注入,这一节我们讲解Spring中Bean如何自动装配,废话不多说,直接上正文! 文章目录 Bean的 ...

  6. 第2章—装配Bean—自动化装配Bean

    自动化装配Bean 2.1.Spring配置可选方案 ​ 装配是依赖注入DI的本质,Spring提供了以下三种注入的装配机制: 在XMl中进行显式配置 在java中进行显式配置 隐式的Bean发现机制 ...

  7. Spring中使用byType实现Beans自动装配

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/beans-auto-wiring/spring-autowiring-byType.html: 此 ...

  8. Spring -- 入门,装备集合,自动装配,分散装配,自定义编辑器

    1. 概要 struts2:web hibernate:持久化 spring:业务层.管理bean的,容器.List Map Set.体验spring:1.创建java项目.2.引入spring的类库 ...

  9. java 自动装配_spring自动装配是什么?spring自动装配方式

    Spring是受欢迎的企业级Java应用程序开发框架,数以百万的来自世界各地的开发人员都在使用 Spring 框架创建高性能.易于测试和可重用的代码. 自动装配是Spring框架的重要功能,是使用Sp ...

最新文章

  1. 11gR2 GI和DB安装目录权限属主被修改后的恢复方法
  2. AI技术在图像水印处理中的应用
  3. 佛门的七众弟子指的是哪些呢?
  4. 实现虚拟xp与主机xp之间的文件共享
  5. Arrays.sort和Collection.sort分别使用什么排序来实现的
  6. ICPR 2020国际学术竞赛:大规模无噪声精细商品图像识别
  7. BP contact search in Fiori ui
  8. 使用 Bridge to Kubernetes 简化云端开发
  9. 计算机等级delphi取消,计算机二级DELPHI控件:DELPHI过滤记录的实现方法
  10. android网络切换socket,Android版的websocket切换网络无法重连
  11. gulimall(谷粒商城) 是一个综合性的B2C平台,包括前台商城系统以及后台管理系统
  12. shiro filter
  13. MDataTable属性RecordsAffected新应用:WebService与Json交互的记录总数
  14. 计算机组成原理(白中英) 第三章 课后题答案
  15. 小白入门Python Web开发介绍(持续更新)
  16. 完全免费:鲜为人知的桌面正文内容检索工具(支持epub/mobi/azw3/markdown)
  17. 如何 运行WRF模型 天气预报 数据后处理
  18. mysql加减时间-函数-时间加减
  19. 如何写项目方案经验总结
  20. Scala详细文本教学04

热门文章

  1. 科沃斯擦窗机器人擦不干净怎么办_家用自动擦玻璃机器人哪种好呢?玻妞和科沃斯擦窗机器人能干净吗...
  2. 如何系统性掌握深度学习模型设计和优化
  3. 【杂谈】深度学习必备,各路免费爬虫一举拿下
  4. 中国汽车融资租赁业运营前景与投资战略规划报告2022-2028年版
  5. 供应链新格局重塑全球农业贸易 对话国际农民丰收节贸易会
  6. 汉诺塔的实现 c++
  7. ssl初一组周六模拟赛【2018.3.31】
  8. 谈谈跨界在软件开发中存在的意义
  9. github托管代码
  10. 获取当前屏幕显示的viewcontroller