Spring笔记——装配Bean
1、Spring配置的可选方案
- 在XML中进行显式配置。
- Java中进行显式配置。
- 隐式的bean发现机制和自动装配。
2、自动化装配bean
Spring从两个角度来实现自动化装配:
- 组件扫描(component scanning): Spring会自动发现应用上下文中所创建的bean。
- 自动装配(autowiring): Spring自动满足bean之间的依赖 。
2.1、创建可被发现的bean——@Component(在POJO实现类上添加@Component注解);
2.2、启用组件扫描——@ComponentScan
- 在java配置类上添加@ComponentScan注解启用组件扫描
@Configuration @ComponentScan public class DemoConfig { }
- 通过XML启用组件扫描
<beans ... > <context:component-scan base-package="" /></beans>
- 通过@Autowired注解实现自动装配
2.3、为组件扫描的bean命名
- @Component("beanName");
- @Named("beanName");
2.4、设置组件扫描的基础包
- 如果是通过Java配置类进行配置的,默认配置类所在的包为基础包;
- 通过basePackages配置组件扫描的基础包——@ComponentScan(basePackages={"xxx", "xxxx"});
- 将其指定为包中包含的类或接口——@ComponentScan(basePackageClasses={xxx.class, xxxx.class});
2.5、通过为bean添加注解实现自动装配——@Autowired。@Autowired = @inject
- 在属性上使用@Autowired;
- 在构造方法上使用@Autowired;
- 在setter方法上使用@Autowired;
- 在任何方法上使用@Autowired。
3、通过Java代码装配bean
@Configuration // 使用@Autowired声明该类为配置类 public class CDPlayerConfig {@Bean // 默认情况下bean的ID与带有@Bean注解的方法名相同 public CompactDisc sgtPeppers() { return new SgtPeppers(); } @Bean(name="beanName") public CompactDisc sgtPeppers2() { return new SgtPeppers(); } @Bean public CDPlayer cdPlayer(CompactDisc compactDisc) { return new CDPlayer(compactDisc); }}
4、通过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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.10.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.10.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.10.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.10.xsd"><!-- 配置数据源 --><bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean><!-- 扫描Mybatist配置文件 --><bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactory"><property name="dataSource" ref="dataSource" /><property name="mapperLocations" value="classpath:mysql/*.xml"/></bean><!-- Mapper扫描配置 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.zhux.user.dao"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean> </beans>
5、导入和混合配置
5.1、在JavaConfig中引用XML配置;
5.2、在XML配置中引用JavaConfig。
转载于:https://www.cnblogs.com/zhuxiong/p/7647605.html
Spring笔记——装配Bean相关推荐
- Spring之装配Bean(一)
Spring中装配bean的三种主要方式 1.隐式的bean发现机制和自动化装配 组件扫描( component scanning) : Spring会自动发现应用上下文中所创建的bean. 自动装配 ...
- spring(2)装配Bean
[0]README 0)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review spring(2)装配Bean 的相关知识: 1)在sprin ...
- spring三: 装配bean( 在xml中进行显式配置, 在java中进行显式配置)
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class); SpringCon ...
- spring二:装配bean(自动装配)
创建应用对象之间协作关系的行为通常称为装配(wiring),这就是依赖注入(DI)的本质. Spring提供了三种主要的装配机制: 1. 在xml中进行显式配置. 2. 在java中进行显式配置. ...
- Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...
- Spring自动装配Bean
除了使用 XML 和 Annotation 的方式装配 Bean 以外,还有一种常用的装配方式--自动装配.自动装配就是指 Spring 容器可以自动装配(autowire)相互协作的 Bean 之间 ...
- Spring基础—装配bean(一)
在讲解Spring配置beans之前首先想一下一部成功的电影都需要哪些成员参与.首先,最重要的是要有导演.编剧.演员和投资人:其次,还有没那么明显的成员,音乐人.特技演员和艺术指导:此外,还有其他很重 ...
- Spring 自动化装配Bean
声明一张cd的接口: public interface CompactDisc {public abstract void play(); } 实现cd接口: @Component("Sgt ...
- spring自动装配Bean的五种方式
no:默认方式,手动装配方式,需要通过ref设定bean的依赖关系 byName:根据bean的名字进行装配,当一个bean的名称和其他bean的属性一致,则自动装配 byType:根据bean的类型 ...
最新文章
- oracle创建表分区表,oracle创建分区表
- 程序员面试题精选100题(14)-圆圈中最后剩下的数字[算法]
- Java下载文件的几种方式
- 药学专业报计算机一级有用吗,全网友泣泪劝阻!高考结束之后,什么专业千万不能报?...
- javascript 参数检验(二):参数检查工具的完善
- 学习日记之单例模式和Effective C++
- 实现Runnable接口和继承Thread类之间的区别
- java学习(三)内部类
- 笛卡尔心形函数表达式_笛卡尔爱心函数表达式 笛卡尔形式
- Python数模笔记-NetworkX(5)关键路径法
- 双六(挑战程序设计竞赛)
- Towards Enhancing Fine-grained Details for Image Matting
- cesium添加高德影像图
- WPF基础到企业应用系列8——依赖属性之“风云再起”
- BZOJ5077: [Ctsc2016]时空旅行(线段树+凸包)
- revit出图建模【尺寸定位标注】功能
- 《图形图像处理》— 使用matlab对图像进行二值化和灰度化处理
- 当前日期的周一,下周日期,下月日期;批次号生成
- 银行家算法——C++实现 [ 开源代码 + 详细解析 ]
- 【狂神说】CSS学习笔记
热门文章
- matlab对常见特殊数据文件读取:edf、cnf、bdf、tdms、e
- mysql数据表关联操作步骤_MySQL数据库(三)—— 表相关操作(二)之约束条件、关联关系、复制表...
- 打交通赔偿官司需要那些证据?
- 支持360打倒无耻的tx
- 什么是事件代理(事件委托) 有什么好处
- mupdf PDF查看器使用教程
- 武侠乂怎么修改服务器,武侠乂操作技巧 武侠乂手游怎么操作
- (原创)详解Quartus导出网表文件:.qxp和.vqm
- 华硕电脑开启UEFI启动
- remove和removeat之间的区别?