一、Spring中装配bean的方式

1.在XML中显式配置

2.在Java中进行显式配置

3.隐士的bean发现机制和自动装配

二、自动装配示例

1.在需要装配到其他bean中的类中加入@Component注解

package study.spring.configure.auto;import org.springframework.stereotype.Component;/*** 第一步:将该类声明成一个组件类,括号内的参数为组件类的id自定义名称,也可以使用@Named.* spring会自动生成该类的bean* @author wang**/
@Component("lonelyHeartsClub")
public class SgtPeppers implements CompactDisc{private String titil = "Sgt. Pepper's Lonely Hearts Club Band.";private String artist = "The Beatles";@Overridepublic void play() {System.out.println("Playing " + titil + " by " + artist);}}

2.开启组件扫描

  i.使用java配置开启

package study.spring.configure.auto;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;/**    使用@ComponentScan注解开启组件扫描,设置扫描的基础包名*        参数basePackages*        或者basePackageClasses*/@Configuration
@ComponentScan(basePackages={"study.spring.configure.auto","study.spring.configure.auto2"})
public class CDPlayerConfig {}

  ii.使用xml开启

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"> <context:component-scan base-package="study.spring.configure.auto"></context:component-scan></beans>

3.在注入的bean中选择三种方法,使用@Autowired对bean注入

  i.在属性上直接注入

  ii.在构造方法上注入

  iii.在Set方法上注入

package study.spring.configure.auto;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class CDPleayer {@Autowiredprivate CompactDisc cd;public CompactDisc getCd() {return cd;}/** 不同的注入方法* 1. set方法注入* 2. 构造器注入* 3. 属性上直接注入 * * @Autowired与@Inject类似*/@Autowiredpublic void setCd(CompactDisc cd) {this.cd = cd;}@Autowired(required=false)public CDPleayer(CompactDisc compactDisc) {this.cd = compactDisc;}public void play(){cd.play();}
}

  注:可以在任何方法上使用@Autowired注入

三、自动注入的局限性  

  虽然自动注入很方便,但是自动注入需要自动创建bean实例,但是对于第三方的jar包中的类文件而言,不能直接使用注解进行声明为组件,因此还需要xml配置。

转载于:https://www.cnblogs.com/bopo/p/9274455.html

【Spring】—— 自动装配相关推荐

  1. Spring 自动装配 ‘byType’

    转载自   Spring 自动装配 'byType' Spring 自动装配 'byType' 这种模式由属性类型指定自动装配.Spring 容器看作 beans,在 XML 配置文件中 beans ...

  2. Spring 自动装配 ‘byName’

    转载自  Spring 自动装配 'byName' Spring 自动装配 'byName' 这种模式由属性名称指定自动装配.Spring 容器看作 beans,在 XML 配置文件中 beans 的 ...

  3. spring自动装配依赖包_解决Spring自动装配中的循环依赖

    spring自动装配依赖包 我认为这篇文章是在企业应用程序开发中使用Spring的最佳实践. 使用Spring编写企业Web应用程序时,服务层中的服务量可能会增加. 服务层中的每个服务可能会消耗其他服 ...

  4. Java的注解机制——Spring自动装配的实现原理

    JDK1.5加入了对注解机制的支持,实际上我学习Java的时候就已经使用JDK1.6了,而且除了@Override和@SuppressWarnings(后者还是IDE给生成的--)之外没接触过其他的. ...

  5. Spring自动装配----注解装配----Spring自带的@Autowired注解

    Spring自动装配----注解装配----Spring自带的@Autowired注解 父类 package cn.ychx;public interface Person {public void ...

  6. spring自动装配、注解

    spring自动装配 Spring 自动装配 byName 这种模式由属性名称指定自动装配.Spring 容器看作 beans,在 XML 配置文件中 beans 的 auto-wire 属性设置为 ...

  7. Spring自动装配(autowire)篇

    什么是自动装配 自动装配帮我们省去了 property标签配置操作,Spring会自动根据 属性名称,类型,构造器来进行自动注入. 例如不进行自动装配配置如下: <bean id="u ...

  8. 一步一步手绘Spring DI运行时序图(Spring 自动装配之依赖注入)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  9. 第六篇 Spring 自动装配

    <Spring>篇章整体栏目 ----------------------------- [第一章]spring 概念与体系结构 [第二章]spring IoC 的工作原理 [第三章]sp ...

  10. (二)Spring自动装配

    Spring自动装配 为了减少XML的配置数量.Spring提供了几种技巧来解决这一问题: 自动装配(autowiring): 有助于减少<property>元素和<constroc ...

最新文章

  1. 2D和3D机器视觉检测技术的优势和局限性
  2. Canny边缘检测原理及C#程序实现
  3. 【渝粤教育】电大中专计算机常用工具软件 (2)作业 题库
  4. Nginx应用案例分享:压力测试
  5. linux 下qt 终端隐藏在后台_20 个 Linux 终端下的生产力工具 | Linux 中国
  6. Dubbo学习笔记(一)
  7. 计算机信息科学与应用技术学术论,第三届计算机信息科学与应用技术国际学术论坛(ISCISAT .DOC...
  8. 十本数据结构与算法书籍推荐
  9. java flv 转swf_nginx-http-flv-module flv拉流错误整理
  10. 汇编 DOS系统功能调用
  11. OceanBase 之 OBCA考试总结
  12. win7系统怎么进行网络重置?
  13. TCP之 select模型
  14. Storport MSI (Message Signaled Interrupts)
  15. 小武告诉滨滨每天可以吃一块或者两块巧克力。假设滨滨每天都吃巧克力,问滨滨共有多少种不同的吃完巧克力的方案。
  16. Django中filer和get的区别
  17. js实现格式化JSON数据方法
  18. 贝拉博客,一个屌丝网站
  19. SpringBoot国际化失败的原因,切换中英文无效
  20. 贾跃亭要回国圆“造车梦”?FF关联公司广州拿地601亩

热门文章

  1. Word2007 设置Tab键的默认缩进距离
  2. 屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键
  3. 一起学mini2440裸机开发(十)--mini2440外部中断实验
  4. 我的android面试经历
  5. 有向图——强连通分量
  6. golang中的plugin包
  7. tcp/ip详解--ttl
  8. python二十六: 字符串颜色
  9. 阿里七层流量入口 Tengine硬件加速探索之路
  10. 【微职位公开课】老学长自述:如何成为年薪50W的技术工程师