继前一篇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. 使用navicat连接mysql要报10038的错误

    1.mysql的设置 (1)授权mysql>grant all privileges on *.*  to  'root'@'%'  identified by 'youpassword'  w ...

  2. KVO内部实现原理

    KVO的原理: 只要给一个对象注册一个监听, 那么在运行时, 系统就会自动给该对象生成一个子类对象, (格式如:NSKVONotifying_className), 并且重写自动生成的子类对象的被监听 ...

  3. C语言之贪吃蛇

    利用链表的贪吃蛇,感觉自己写的时候还是有很多东西不熟悉, 1.预编译 2.很多关于系统的头文件也不是很熟悉 3.关于内存 第一个是.h头文件 #ifndef _SNAKE_H_H_H #define ...

  4. Java多线程与并发库高级应用-传统定时器技术回顾

    传统定时器技术回顾(jdk1.5以前) public class TraditionalTimerTest { static int count = 0; public static void mai ...

  5. [bzoj1787][Ahoi2008]紧急集合

    Description 给定一棵大小为的树,有组询问,每组询问给三个点,求到这三个点距离和最小的点及最小距离和. Input 第一行两个数. 接下来行,每行两个数表示到有一条边. 最后行,每行个数,为 ...

  6. Leetcode 372. Super Pow

    使用公式 c = ab  =>  c mod d = [a mod d * b mod d] mod d 所以a^423 mod d = (a^100)^4 * (a ^10)^2 * a^3 ...

  7. Leetcode 77, Combinations

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  8. Hadoop的RPC分析

    一.基础知识 原理 http://www.cnblogs.com/edisonchou/p/4285817.html,这个谢了一些rpc与hadoop的例子. 用到了java的动态代理,服务端实现一个 ...

  9. 【bzoj2120】 数颜色

    http://www.lydsy.com/JudgeOnline/problem.php?id=2120 (题目链接) 题意 给出一个n个数,m个询问,每次询问一个区间或修改一个数,求区间内不同的数有 ...

  10. C++开发的基于TCP协议的内网聊天工具

    项目相关地址 源码:https://github.com/easonjim/TCPChat bug提交:https://github.com/easonjim/TCPChat/issues