Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质。
Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些bean并且如何将其装配在一起。
1、Spring提供了三种主要的装配机制
- 在XML文件中进行显示装配;
- 在Java代码中显示装配;(JavaConfig)
- 隐式的bean发现机制和自动装配;(注解)
2、如何选择装配机制?
完全可以灵活配置。
但作者建议尽可能地使用自动装配机制,且显示配置越少越好。
当必须显示配置bean(有些源码不是由你维护,而你需要为这些代码配置bean),作者推荐使用类型安全并且比XML更加强大的JavaConfig。
只有当你想使用便利的XML命名空间,并且在JavaConfig中没有同样的实现时,才应该使用XML。
3、Spring怎么实现自动化装配?
- 组件扫描(component scanning):Spring自动发现应用上下文所创建的bean;
- 自动装配(autowiring):Spring自动满足bean之间的依赖
两者组合能发挥强大的威力,能够将显示配置降低到最少。
需要了解的是,在自动装配时,不要在意装配的bean来自哪里。自动装配机制会考虑到容器中所有的bean,不管它是在JavaConfig or XML中声明还是通过组件扫描获取到的。只要bean在同一个Spring应用上下文中就行。
4、几种开启组件扫描的方式:
JavaConfig:
/*这是一个用于专用于设置配置的Java类*/@Configuration //声明这是配置类 @ComponentScan //开启组件扫描 public class JavaConfigClass{ }
@ComponentScan 默认扫描与配置类相同的包(肯定就包括子包啦)。
@ComponentScan(basePackages={“Package1”,“Package2”})也可以通过basePackages属性指定一个或者多个基础包,但是这样并不安全。
@ComponentScan(basePackages={AAA.class,BBB.class}),这些类所在包会作为组件扫描的基础包。还可以专门创建一个空标记接口,用于标记基础包,这样可以保持对重构的友好。
XML:
<context:component-scan base-package="com.biguo.xxx"/>
5、自动装配中的注解
@Component("String ID"):该类会作为组件类,并告知Spring要为这个类创建bean。
Spring应用上下文中所有的bean都会给定一个ID,若没有明确指定,Spring会根据类名为其指定一个ID,默认为把类名第一个字母小写。
(JavaConfig中,@Named("String ID")效果相同)
@Autowired
常用于构造器、setter方法,当Spring创建它们所在对象的bean时,会传入一个相应参数类型的bean,即自动满足所创建bean 的(对另一个bean的)依赖。
(这里就要考虑所依赖的bean存在不存在、有多少个的问题啦)
(JavaConfig中,为@Inject)
6、JavaConfig中声明bean
@Bean——告诉Spring这个方法返回一个对象,该对象要注册为Spring应用上下文中的bean,bean的默认ID和这个方法名一致,也可以用name属性自定义啦。
Spring会拦截所有对@Bean注解的方法的调用,确保直接返回这个方法创建的bean,而不是让其执行实际调用。 (这个bean还可以重复使用,因为Spring默认单例模式)
7、关于混合配置
JavaConfig中引用XML配置——@Import(xx.class)、@ImportResource("classpath:xxx.config.xml")
XML配置中引用JavConfig~~~
转载于:https://www.cnblogs.com/bigbigbigo/p/8357521.html
Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire相关推荐
- Spring实战之二:装配Bean
2.1 Spring配置的可选方案 Spring提供了三种装配机制: 在XML中显式配置 在Java中显式配置 隐式的bean发现机制和自动装配 Best Practice:尽可能使用自动配置的机制, ...
- 【小家Spring】Spring注解驱动开发---向Spring Ioc容器中注册Bean的7种方式
每篇一句 比你有钱的人一定会比你努力,而比你努力的人终有一天会比你有钱 前言 Spring是一个非常强大的反转控制(IOC)框架,以帮助分离项目组件之间的依赖关系.因此可以说Spring容器对Bean ...
- Spring实战——通过Java代码装配bean
上篇说的是无需半行xml配置完成bean的自动化注入.这篇仍然不要任何xml配置,通过Java代码也能达到同样的效果. 这么说,是要把上篇的料拿出来再煮一遍? 当然不是,上篇我们几乎都在用注解的方式如 ...
- spring自动装配Bean的五种方式
no:默认方式,手动装配方式,需要通过ref设定bean的依赖关系 byName:根据bean的名字进行装配,当一个bean的名称和其他bean的属性一致,则自动装配 byType:根据bean的类型 ...
- 装配bean的三种方式
第一种:XML装配 xml装配有两种方式: 第一种:利用有参构造方法注入 User类: package com.liu.xml;import java.util.List; //xml装配bean的两 ...
- 记下来 Spring 装配 Bean 的三种方式
ps:拿笔记一下,面试可能会考.依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 前言 什么是依赖注入呢?也可以称为控制反转,简单的来说,一 ...
- [Spring实战系列](12)Bean的自动装配
Spring提供了4种各具特色的自动装配策略: 类型 说明 no 默认方式,Bean的引用必须通过XML文件中的</ref>元素或者ref属性手动设定. byName 把与Bean的属性具 ...
- 【Spring实战4】04---装配Bean(自动装配)
主要内容: 声明Bean 构造器注入和Setter方法注入 装配Bean 控制bean的创建和销毁 Spring装配Bean的3种机制 在XML中进行显式配置 在Java中进行显式配置 隐式的bean ...
- 在Spring MVC应用程序中使用Bean Validation 1.1获得更好的错误消息
在许多新功能中, Bean Validation 1.1引入了使用统一表达式语言(EL)表达式的错误消息插值. 这允许基于条件逻辑来定义错误消息,还可以启用高级格式化选项 . 添加到Spring MV ...
最新文章
- 超效率dea模型_【探索】基于超效率DEA模型的我国公立医院排行榜研究
- Android开发之SpannableString具体解释
- git clone 一些简单笔记
- javaee后台适合用的编辑器插件
- C++函数的分文件编写
- 怎样用计算机算屋面的坡度,屋顶坡度要怎么算,一般是多少?
- python文字游戏源代码妈妈和我年纪_Python实现猜年龄游戏代码实例
- 转 jquery使用技巧小结
- php英文书籍在线,php英语四级在线练习系统
- Javascript心得(一) Javascript数据类型
- 51nod 1534 棋子游戏(博弈)
- echarts 柱形图数据位置显示
- 怎么安装消息队列服务器,安装和配置消息队列(针对存档服务器)
- pattern.compile java_Java Pattern compile(String)用法及代码示例
- 论文阅读笔记《Dynamic Few-Shot Visual Learning without Forgetting》
- Excel单元格校验
- 通过禁用受保护的视图来启用所有Office 2010文档的编辑
- 答:本科生写论文对考研有用吗?
- 十、快速入门线性代数的向量和矩阵篇
- 企业防火墙的基础配置
热门文章
- 运行pip报错:Fatal error in launcher: Unable to create process using '’路径’'
- Lambda表达式替代匿名方法
- linux svn 命令
- linux c程序中获取shell脚本输出
- apache默认网站
- element ui登录界面_Vue和Element-UI做一个简单的登录页面
- python心理学实验程序_psychopy coder模式编写心理试验程序 字符程序和记录反应时...
- 插入函数c语言,线性表的插入函数
- 8大行业场景!最新 Apache Flink 行业案例集火热出炉
- Flink + Iceberg + 对象存储,构建数据湖方案