Spring Ioc--Bean装配
继前一篇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装配的更多相关文章
- Spring IoC bean 的创建(上)
前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...
- Spring(004)-Bean装配
一,问题,Bean找不到 代码 @Component public class DemoClass { public int doSth() { ; } } 测试代码 @RunWith(SpringJ ...
- Spring IoC bean 的初始化
前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...
- 小马哥讲Spring栈核心编程思想 Spring IoC+Bean+Framework
小马哥出手的Spring栈核心编程思想课程,可以说是非常专业和权威的Spring课程.课程主要的方向与核心是Spring Framework总览,带领同学们重新认识重新认识IoC,Spring IoC ...
- Spring IOC容器装配Bean_基于注解配置方式
bean的实例化 1.导入jar包(必不可少的) 2.实例化bean applicationContext.xml(xml的写法) <bean id="userDao" cl ...
- spring 使用@Bean装配Bean
通过@Component装配Bean,但是@Component只能注解在类上,不能注解到方法上.对于Java而言,大部分的开发都需要引入第三方的包(jar文件),而且往往并没有这些包的源码,这时候将无 ...
- 【Spring】Spring的bean装配
前言 bean是Spring最基础最核心的部分,Spring简化代码主要是依赖于bean,下面学习Spring中如何装配bean. 装配bean Spring在装配bean时非常灵活,其提供了三种方式 ...
- Spring对Bean装配详解
1.Spring提供了三种装配bean的方式: 2.自动装配bean: 3.通过Java代码装配bean 4.通过XML装配bean 前言:创建对象的协作关系称为装配,也就是DI(依赖注入)的本质.而 ...
- Spring IoC bean 的加载
前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...
- Spring 源码 (1)Spring IOC Bean 创建的整体流程
Spring IOC 中涉及的重要接口 BeanDefinition Bean的描述信息,实现类包括 RootBeanDefinition 和 GenericBeanDefinition,Bean的描 ...
随机推荐
- 使用navicat连接mysql要报10038的错误
1.mysql的设置 (1)授权mysql>grant all privileges on *.* to 'root'@'%' identified by 'youpassword' w ...
- KVO内部实现原理
KVO的原理: 只要给一个对象注册一个监听, 那么在运行时, 系统就会自动给该对象生成一个子类对象, (格式如:NSKVONotifying_className), 并且重写自动生成的子类对象的被监听 ...
- C语言之贪吃蛇
利用链表的贪吃蛇,感觉自己写的时候还是有很多东西不熟悉, 1.预编译 2.很多关于系统的头文件也不是很熟悉 3.关于内存 第一个是.h头文件 #ifndef _SNAKE_H_H_H #define ...
- Java多线程与并发库高级应用-传统定时器技术回顾
传统定时器技术回顾(jdk1.5以前) public class TraditionalTimerTest { static int count = 0; public static void mai ...
- [bzoj1787][Ahoi2008]紧急集合
Description 给定一棵大小为的树,有组询问,每组询问给三个点,求到这三个点距离和最小的点及最小距离和. Input 第一行两个数. 接下来行,每行两个数表示到有一条边. 最后行,每行个数,为 ...
- 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 ...
- Leetcode 77, Combinations
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...
- Hadoop的RPC分析
一.基础知识 原理 http://www.cnblogs.com/edisonchou/p/4285817.html,这个谢了一些rpc与hadoop的例子. 用到了java的动态代理,服务端实现一个 ...
- 【bzoj2120】 数颜色
http://www.lydsy.com/JudgeOnline/problem.php?id=2120 (题目链接) 题意 给出一个n个数,m个询问,每次询问一个区间或修改一个数,求区间内不同的数有 ...
- C++开发的基于TCP协议的内网聊天工具
项目相关地址 源码:https://github.com/easonjim/TCPChat bug提交:https://github.com/easonjim/TCPChat/issues