spring 装配
spring 3种装配方式:
支持混合配置:不管使用JavaConfig还是使用XML进行装配,通常都会创建一个根配置(root configuration),
这个配置会将两个或更多的装配类和/或XML文件组合起来,在根配置中启用组件扫描(通过<context:component-scan>或@ComponentScan)
(1)xml
简单:<bean id="", class="">
<constractor-arg ref/value>
</bean>
(2)javaconfig
进行显式配置时,JavaConfig是更好的方案,因为它更为强大、类型安全并且对重构友好
@Configuration注解表明这个类是一个配置类
@Bean(name="", destrodyMethod) 注解会告诉Spring这个方法将会返回一个对象,该对象要注册为Spring应用上下文中的bean, 默认情况下,bean的ID与带有@Bean注解的方法名是一样的


(3)自动装配 扫描,并进行自动注入
想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component和@Autowired注解的,因此就不能使用自动化装配的方案了
@Component(beanid, 默认就是将类名的第一个字母变为小写) 注解。这个简单的注解表明该类会作为组件类,并告知Spring要为这个类创建bean
Spring支持将@Named作为@Component注解的替代方案
组件扫描默认是不启用的。我们还需要显式配置一下Spring,从而命令它去寻找带有@Component注解的类,并为其创建bean.
@ComponentScan(basePackages={"a", "b"}) 会启用自动扫描,果没有其他配置的话,@ComponentScan默认会扫描与配置类相同的包
@ComponentScan(basePackageClasses={A.class, B.class}) 这样更好,利于重构代码,就是将其指定为包中所包含的类或接口. 在包中创建一个用来进行扫描的空标记接口(marker interface)。
通过标记接口的方式,你依然能够保持对重构友好的接口引用,但是可以避免引用任何实际的应用程序代码
xml 配置:<context:component-scan base-pacage="">
javaconfig配置:
@Configuration
@ComponentScan
自动装配
就是让Spring自动满足bean依赖的一种方法,在满足依赖的过程中,会在Spring应用上下文中寻找匹配某个bean需求的其他bean
@Autowired(required=true) 可以用在类的任何方法上. 如果没有匹配的bean,那么在应用上下文创建的时候,Spring会抛出一个异常。
为了避免异常的出现,你可以将@Autowired的required属性设置为false
将required属性设置为false时,Spring会尝试执行自动装配,但是如果没有匹配的bean的话,Spring将会让这个bean处于未装配的状态。但是,把required属性设置为false时,你需要谨慎对待。如果在你的代码中没有进行null检查的话,这个处于未装配状态的属性有可能会出现NullPointerException。如果有多个bean都能满足依赖关系的话,Spring将会抛出一个异常,表明没有明确指定要选择哪个bean进行自动装配
Spring同时支持@Inject和@Autowired
(4) 混合配置
javaconfig 引用另外一个javaconfig

javaconfig 引用xml

xml引用javaconfig 和xml

spring 装配的更多相关文章
- spring装配---处理自动装配的歧义性
一.歧义性 当我们使用spring的注解进行自动装配bean时,如果不仅有一个bean能够匹配结果的话,会抛出NoUniqueBeanDefinitionException: 例如本例中 当sprin ...
- Spring 装配Bean
Spring 装配Bean 装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介 ...
- Spring装配bean
Spring配置的可选方案 Spring提供了如下三种装配机制: (1)在XML中显式配置 (2)在Java中显式配置 (3)隐式的bean发现机制和自动装配 Spring有多种方式可以装配bean, ...
- Spring装配Bean之XML装配bean
在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配 ...
- JAVA入门[13]-Spring装配Bean
一.概要 Sping装配bean主要有三种装配机制: 在XML中进行显式配置. 在Java中进行显式配置. 隐式的bean发现机制和自动装配. 原则: 建议尽可能地使用自动配置的机制,显式配置越少越好 ...
- spring/java ---->记录和整理用过的注解以及spring装配bean方式
spring注解 @Scope:该注解全限定名称是:org.springframework.context.annotation.Scope.@Scope指定Spring容器如何创建Bean的实例,S ...
- spring装配注解(IOC容器加载控制)ComponentScan及ComponentScans使用
ComponentScan,只写入value,可扫描路径下装配的@Contrller.@Service.@Repository @ComponentScan(value = "com.tes ...
- Spring装配Bean的过程补充
对上一篇的<Spring装配Bean的过程>的过程说一下,不然真产生了误区. 误区在哪里呢?那就是spring bean的作用域问题. 说哈常用的两种作用域:默认是scope = sing ...
- Spring装配Bean的过程
首先说一个概念:“懒加载” 懒加载:就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. spring配置文件中be ...
- Spring 装配Bean入门级
装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介绍 1 :声明Bean B ...
随机推荐
- django RESTful设计方法
1. 域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下. https://example.org ...
- MacbookPro下载word文件显示dms怎么办
方法:直接改扩展名!!!!!!!!!! 如果你下载的是word的话,把最后的扩展名.dms改成.doc就可以了. 同理,如果你下载的是rar的话,改成rar就好了.
- RPC -dubbo 服务导出实现
在阅读此文章之前,我希望阅读者对Spring 扩展机制的有一定的了解,比如:自定义标签与Spring整合, InitializingBean 接口,ApplicationContextAware,Be ...
- 51-迷宫(一)- java版dfs和bfs
一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道. 看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路. 输入格式 第一行输入两个整数 nn ...
- SVD的基础详解
目录
- checkinstall
一.简介 Linux 的源码安装工具 CheckInstall
- centos7 安装mysql5.7.20(yum方式)
windows下安装mysql请访问:windows下mysql5.7.20安装(zip包方式) 一.安装过程 1.安装wget yum install wget 2.查找yum源名称 在mysql官 ...
- Image 图片
随机矩阵画图 这一节我们讲解怎样在matplotlib中打印出图像.这里打印出的是纯粹的数字,而非自然图像.下面用 3x3 的 2D-array 来表示点的颜色,每一个点就是一个pixel. impo ...
- PHP中写定时任务
1.写一个bat E:\Progra~1\wamp\php\php.exe -f "E:\service.php" 2.写接口文件 ignore_user_abort(); //即 ...
- the default terminal(gnome-terminal) start up fail
Platform: Ubuntu 16.04 LTS Reason: variable $LANG on system is empty Solution: localectl set-locale ...