创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质。
Spring装配Bean的三种主要机制:
1.在XML中进行显示配置
2.在java中进行显示配置
3.隐式的bean发现机制和自动装配
1.自动化装配
  1.组件扫描:spring会自动发现上下文中创建的Bean
  2.自动装配:Spring自动满足bean之间的依赖
组件扫描
public interface Phone {
void speak();
}
@Component定义组件,@Component("apple")可以指定组件id
@Component
public class Apple implements Phone{
@Override
public void speak() {
System.out.println("apple speak");
}
}
 
创建配置类:
注解@ComponentScan启用了组件扫描,basePackages扫描指定单个包,多个包(basePackages ={"",""})
@Configuration
//@ComponentScan(basePackages = "com.spring.ioc.autowiring")
@ComponentScan(basePackages = {"com.spring.ioc.autowiring","com.spring.di"})
public class PhoneConfig {
}
 
这里也可以不用这个类配置@ComponentScan,可用xml配置
<!-- 启用组件扫描-->
<context:component-scan base-package="com.spring.ioc.autowiring"/>

测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = PhoneConfig.class)
public class PhoneTest {
@Autowired
private Phone phone;
@Test
public void checkPhone(){
phone.speak();
Assert.assertNotNull(phone);
}
}
 
自动装配

@Autowired
public class Xiaoming {
private Phone phone;
//这里不管是构造方法、set方法、普通方法@Autowired都能自动装配
@Autowired
public Xiaoming(Phone phone) {
this.phone = phone;
} public void speak(){
phone.speak();
}
}
 
2.通过java代码装配bean
代码如下:
public class XiaoMi implements Phone{
@Override
public void speak() {
System.out.println("小米。。。。。。");
}
}
创建配置类:
@Configuration
public class JavaConfig { @Bean
public Phone getPhone(){
return new XiaoMi();
}
}  
junit测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = JavaConfig.class)
public class JavaConfigTest {
@Autowired
private Phone phone;
@Test
public void checkPhone(){
phone.speak();
Assert.assertNotNull(phone);
}
}
也可以通过如下main测试
public static void main(String[] args) {
//加载java配置类获取Spring应用上下文
ApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class);
XiaoMi xiaoMi= ac.getBean(XiaoMi.class);
xiaoMi.speak();
}
3.在XML中进行显示配置
声明bean用<bean id="xxx" class="xxx">标签

《Spring in action》之装配Bean的更多相关文章

  1. Spring实战3:装配bean的进阶知识

    主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expressio ...

  2. Spring实战2:装配bean—依赖注入的本质

    主要内容 Spring的配置方法概览 自动装配bean 基于Java配置文件装配bean 控制bean的创建和销毁 任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须 ...

  3. Spring框架(3)---IOC装配Bean(注解方式)

    IOC装配Bean(注解方式) 上面一遍文章讲了通过xml来装配Bean,那么这篇来讲注解方式来讲装配Bean对象 注解方式需要在原先的基础上重新配置环境: (1)Component标签举例 1:导入 ...

  4. java之Spring(IOC)装配Bean(手动装配、自动装配、注解装配)

    在上一篇控制反转中我们看到了依靠一个Bean文件来实现对代码的控制,可谓十分便捷,再也不用去实例化对象了,2333~~~ 1.手动装配 <bean id="todo" cla ...

  5. Spring框架(2)---IOC装配Bean(xml配置方式)

    IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...

  6. Spring 通过Java代码装配bean

    1. 背景 书接上文Spring自动化装配bean 尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化扫描配置是更为推荐的方式,但在有些情况下自动化扫描的方案行不通,如想要将第三方库中的组 ...

  7. Spring学习总结之---装配Bean

    Spring配置的可选方案 前言:Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,作为开发人员,你需要告诉Spring容器要创建那些Bean,以哪种方式创建,并且如何将 ...

  8. Spring 通过XML配置装配Bean

    使用XML装配Bean需要定义对于的XML,需要引入对应的XML模式(XSD)文件,这些文件会定义配置Spring Bean的一些元素,简单的配置如下: <?xml version=" ...

  9. Spring基础知识之装配Bean

    装配(wiring):创建应用对象之间协作关系的行为.这是依赖注入的本质. Spring配置的可选方案 Spring提供了三种装配机智: 1)在XML中进行显示装配 2)在java中进行显示装配 3) ...

  10. Spring IOC 一——容器装配Bean的简单使用

    下文:SpringIOC 二-- 容器 和 Bean的深入理解 写在前面 这篇文章去年写的,缘起于去年某段时间被领导临时"抓壮丁"般的叫过去做java开发,然后在网上找了一个 Sp ...

随机推荐

  1. laravel ORM 只开启created_at的方法

    class User extends Model { //重写setUpdatedAt方法 public function setUpdatedAt($value) { // Do nothing. ...

  2. 【js】再谈移动端的模态框实现

    移动端模态框的机制因为与PC的模态框机制一直有所区别,一直是许多新人很容易踩坑的地方,最近笔者作为一条老咸鱼也踩进了一个新坑中,真是平日里代码读得太粗略,故而写上几笔,以儆效尤. 故事的起因是这样的, ...

  3. Hdu 3487 play the chain

    Description 瑶瑶很喜欢玩项链,她有一根项链上面有很多宝石,宝石从1到n编号. 首先,项链上的宝石的编号组成一个序列:1,2,3,...,n. 她喜欢两种操作: 1.CUT a b c:他会 ...

  4. [NOI2004]cashier 郁闷的出纳员

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...

  5. JavaScript 正则表达式(转自 mozilla)

    正则表达式是被用来匹配字符串中的字符组合的模式.在JavaScript中,正则表达式也是对象. 这种模式可以被用于 RegExp 的 exec 和 test 方法以及 String 的 match.r ...

  6. ADB Usage Complete / ADB 用法大全

    ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具. 持续更新中,欢迎提 PR 和 Issue 补充指 ...

  7. 2、ipconfig命令

    该命令能够显示出正在使用的计算机的IP信息情况.这些信息包括IP地址.子网掩码.默认网关(连接本地计算机与Internet的计算机).通过IP地址可以进行扫描.远程管理.入侵检测等.ipconfig命 ...

  8. Ceph在手,天下我有

    有人问我,你是如何做到统一存储的?我微微一笑,大声告诉他:Ceph在手,天下我有. Ceph是一个统一的分布式存储系统,旨在实现出色的性能,可靠性和可扩展性.认了OpenStack做大哥之后更是一发不 ...

  9. ImmutableJS

    引用大神的一句话:(具体是谁自己问度娘) Shared mutable state is the root of all evil(共享的可变状态是万恶之源) -- Pete Hunt   JavaS ...

  10. MSSQLSERVER_3176

    本文档已存档,并且将不进行维护. MSSQLSERVER_3176                 SQL Server 2014                    SQL Server 2012 ...