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的描 ...
随机推荐
- 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件
CustomResource ResourceDictionary 加载外部的 ResourceDictionary 文件 示例1.演示“CustomResource”相关知识点Resource/Cu ...
- ubuntu下配置和使用ssh
安装 sudo apt-get install openssh-server 启动.停止.重启ssh server sudo /etc/init.d/ssh start sudo /etc/init. ...
- C++ 序列式容器之vector
什么是容器 容器,顾名思义,是用来容放东西的场所.C++容器容放某种数据结构,以利于对数据的搜寻或排序或其他特殊目的.众所周知,常用的数据结构不外乎:数组array, 链表list, 树tree ...
- 【BZOJ-3555】企鹅QQ 字符串Hash
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1545 Solved: 593[Submit][Statu ...
- springMVC-数据绑定流程
1.Spring MVC主框架将ServletRequest对象以及目标方法的入参实例传递给WebDataBinderFactory实例,以创建DataBinder(数据绑定器)实例对象 2.Data ...
- 【uoj264】 NOIP2016—蚯蚓
http://uoj.ac/problem/264 (题目链接) 题意 n条蚯蚓,时间为m.每单位时间要可以将最长的蚯蚓切成len/2和len-len/2两份,长度为0的蚯蚓不会消失,因为每单位时间所 ...
- python pep8
有这个自动的规范检查工具 pip install pep8 具体使用不说了 ==. 百度一堆 http://blog.sae.sina.com.cn/archives/4781 看这里
- Appium for IOS testing on Mac
一:环境 1.Mac OS X 10.9.1 2.Xcod 5.0.2 3.Appium 1.3.6 下载地址:https://bitbucket.org/appium/appium.app/down ...
- JS中的"=="转换规则
number类型与string类型比较,string会转换为number类型 '' == '0' //false 0 == ''//true; 0 == '0'//true ' \t\r\n '==0 ...
- iOS - Availability.h
>for 'dispatch' application inner to begin note `#include <Availability.h>` These macros ar ...