继前一篇IoC概述、Spring容器总结,接下来总结下Bean的装配过程。

要使引用程序中的Spring容器成功启动,需要同时具备以下3个条件:

1、Spring框架的类包,放在应用程序的类路径下。

2、应用程序为Spring提供完备的Bean配置信息。

3、Bean的类,都放到应用程序类路径下。

Spring启动时读取应用程序提供的Bean配信息,并在Spring容器中生成一份相应的Bean配置注册表,然后程序根据这张注册表实例化bean,装配好Bean的额依赖关系,为上层应用提供准备就绪的运行环境。

XML配置

一、Bean基本配置

 <?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<bean id="car" class="com.smart.Car"
init-method="myInit"
destroy-method="myDestory"
p:brand="红旗CA72"
p:maxSpeed="200"
/> </beans>

二、依赖注入

属性注入(灵活性高,常用)

构造函数注入

基于注解的配置

使用注解定义Bean

不管是XML还是注解,它们都是表达Bean定义的载体,其实质都是为Spring容器提供Bean的定义信息。

表现形式上是将XML定义的东西通过注解进行描述。Spring2.0开始引入基于注解的配置方式,在3.1时得到了进一步完善。

通过前面说到,Spring容器启动的三大要件是:Bean定义信息、Bean实现类以及Spring本身。如果采用XML文件的配置,Bean定义信息和类本身是分离的。而采用基于注解的配置方式,Bean定义信息通过在Bean实现类上标注注解实现。

@Compoent:Spring容器自动将POJO转换为容器管理的Bean

以下三个功能和@Compoent等效的注解:

1、@Repository:用于对DAO实现类进行标注

2、@Service:用于对Service实现类进行标注

3、@Controller:用于对Controller实现类进行标注

基于Java类的配置

不经常使用

总结

三种配置方式很难说孰优孰劣,各种不同的方式都有不同的引用场景,建议进一步了解。

XML:1、Bean类类源于第三方类库,如Database、JdbcTemple等,因无法再类中进行注解。

   2、命名空间的配置,如aop、context等,只能采用基于XML配置。

注解:Bean的实现类是当前开发的,可以直接在Java类中使用注解。

Java类:基于Java类配置的优势在于可以通过代码方式控制Bean的初始化的整体逻辑。所以如果实例化Bean的逻辑比较复杂,可以使用此方法。

Spring Ioc--Bean装配的更多相关文章

  1. Spring IoC bean 的创建(上)

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...

  2. Spring(004)-Bean装配

    一,问题,Bean找不到 代码 @Component public class DemoClass { public int doSth() { ; } } 测试代码 @RunWith(SpringJ ...

  3. Spring IoC bean 的初始化

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...

  4. 小马哥讲Spring栈核心编程思想 Spring IoC+Bean+Framework

    小马哥出手的Spring栈核心编程思想课程,可以说是非常专业和权威的Spring课程.课程主要的方向与核心是Spring Framework总览,带领同学们重新认识重新认识IoC,Spring IoC ...

  5. Spring IOC容器装配Bean_基于注解配置方式

    bean的实例化 1.导入jar包(必不可少的) 2.实例化bean applicationContext.xml(xml的写法) <bean id="userDao" cl ...

  6. spring 使用@Bean装配Bean

    通过@Component装配Bean,但是@Component只能注解在类上,不能注解到方法上.对于Java而言,大部分的开发都需要引入第三方的包(jar文件),而且往往并没有这些包的源码,这时候将无 ...

  7. 【Spring】Spring的bean装配

    前言 bean是Spring最基础最核心的部分,Spring简化代码主要是依赖于bean,下面学习Spring中如何装配bean. 装配bean Spring在装配bean时非常灵活,其提供了三种方式 ...

  8. Spring对Bean装配详解

    1.Spring提供了三种装配bean的方式: 2.自动装配bean: 3.通过Java代码装配bean 4.通过XML装配bean 前言:创建对象的协作关系称为装配,也就是DI(依赖注入)的本质.而 ...

  9. Spring IoC bean 的加载

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...

  10. Spring 源码 (1)Spring IOC Bean 创建的整体流程

    Spring IOC 中涉及的重要接口 BeanDefinition Bean的描述信息,实现类包括 RootBeanDefinition 和 GenericBeanDefinition,Bean的描 ...

随机推荐

  1. html5标签figure、figcaption

    figure.figcaption,这俩个标签都是定义图文的 常常用到一种图片列表,图片+标题或者图片+标题+简单描述.以前的常规写法: <li> <img src="te ...

  2. 简单工厂VS工厂方法

    前言: GOF经典的23种设计模式在IT界现已被广为流传.由于比较长时间没有用了,个人对于不同模式与模式之间的区别也渐渐模糊,故开始重温设计模式的思想.也希望更给对设计模式感兴趣的朋友些许的启发. - ...

  3. eclipse/myeclipse下简单更改tomcat的启动等待时间

    1.双击server 2.更改timeout

  4. GameObject.Instantiate(游戏体的实例化),角色的选择

    using UnityEngine; using System.Collections; public class CharacterCreation : MonoBehaviour { public ...

  5. 华硕笔记本之secure boot

    在ubuntu下安装cuda的时候,一直装不好,cuda-7.5.run已经装好了,但是编译cuda的例程时失败,提示cuda的库链接不上. 初步判断是secure boot的问题,因为在开启X的情况 ...

  6. 【BZOJ-1507】Editor 块状链表

    1507: [NOI2003]Editor Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 3397  Solved: 1360[Submit][Stat ...

  7. kali 2.0 启动metasploit服务

    kali 2.0 已经没有metasploit 这个服务了,所以service metasploit start 的方式不起作用. 在kali 2.0中启动带数据库支持的MSF方式如下: 首先启动po ...

  8. 判断IE和Edge

    //判断是否是IE浏览器,包括Edge浏览器function IEVersion() { var userAgent = navigator.userAgent; if (!!window.Activ ...

  9. os和sys模块

    sys模块 sys模块主要是用于提供对python解释器相关的操作 函数 sys.argv #命令行参数List,第一个元素是程序本身路径 sys.path #返回模块的搜索路径,初始化时使用PYTH ...

  10. 数据结构1 线段树查询一个区间的O(log N) 复杂度的证明

    线段树属于二叉树, 其核心特征就是支持区间加法,这样就可以把任意待查询的区间$[L, R]$分解到线段树的节点上去,再把这些节点的信息合并起来从而得到区间$[L,R]$的信息. 下面证明在线段树上查询 ...