Spring装配机制

  • 在xml中进行显示配置
  • 在Java中进行显示配置
  • 隐式bean发现机制和自动装配

自动化装配bean

  • 组件扫描(component scanning),Spring会自动发现应用上下文中的bean
  • 自动装配(autowiring),Spring自动满足bean之间的依赖

Speak.java

public interface Speak {
void say();
}

ChineseSpeak.java

@Component("chineseSpeak")
public class ChineseSpeak implements Speak {
public void say() {
System.out.println("用中文说");
}
}

SpeakConfig.java

@Component
@ComponentScan(basePackages = "com.xqh.spring.autowire")
public class SpeakConfig {
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpeakConfig.class)
public class SpeakTest {
@Autowired
private Speak speak; @Test
public void sayTest(){
speak.say();
}
}

@Component注解告诉Spring这是一个组件类并为之创建bean,bean的id为首字母变小写的类名

@ComponentScan注解启用组件扫描并默认扫描与配置类相同的包

@Autowired注解会在Spring上下文中在自动装配符合的bean

通过java代码装配bean

  • 创建配置类并标记 @Configuration注解

  • 创建方法标记 @Bean注解

Speak.java

public interface Speak {
void say();
}

ChineseSpeak.java

public class ChineseSpeak implements Speak {
public void say(){
System.out.println("通过java代码装配-用中文说");
}
}

SpeakConfig.java

@Configuration
public class SpeakConfig {
@Bean
public Speak chineseSpeak() {
return new ChineseSpeak();
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpeakConfig.class)
public class SpeakTest {
@Autowired
private Speak speak; @Test
public void sayTest(){
speak.say();
}
}

@Configuration标记的类表名是一个配置类并且包含在Spring上下文中如何创建bean的细节

@Bean注解告诉Spring这个方法将返回一个对象并且注册为Spring上下文中的bean

通过xml装配bean

  • 创建Spring Xml配置文件
  • 在JavaConfig中导入bean配置文件

Speak.java

public interface Speak {
void say();
}

ChineseSpeak.java

public class ChineseSpeak implements Speak {
public void say() {
System.out.println("通过xml装配bean-用中文说");
}
}

SpeakConfig.java

@Configuration
@ImportResource("classpath:spring-beans.xml")
public class SpeakConfig {
}

spring-beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="chineseSpeak" class="com.xqh.spring.xmlconfig.ChineseSpeak"></bean>
</beans>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpeakConfig.class)
public class SpeakTest {
@Autowired
private Speak speak; @Test
public void sayTest(){
speak.say();
}
}

Spring Bean装配方式的更多相关文章

  1. Spring Bean装配详解(五)

    装配 Bean 的概述 前面已经介绍了 Spring IoC 的理念和设计,这一篇文章将介绍的是如何将自己开发的 Bean 装配到 Spring IoC 容器中. 大部分场景下,我们都会使用 Appl ...

  2. Spring Bean装配(下)——注解

    @Repository,@Service,@Controller这三个注解是基于component定义的注解 component-scan:组件扫描 base-package:扫描这个下的所有类 &l ...

  3. Spring Bean装配(上)

    Bean:在spring的IOC里面,把配置到IOC容器里面的实体或者是对象都称为Bean Bean配置项 Bean的作用域 Bean的生命周期 Bean的自动装配 Resources&Res ...

  4. Spring入门篇——第4章 Spring Bean装配(下)

    第4章 Spring Bean装配(下) 介绍Bean的注解实现,Autowired注解说明,基于java的容器注解说明,以及Spring对JSR支持的说明 4-1 Spring Bean装配之Bea ...

  5. Spring Bean装配笔记

    Spring Bean装配笔记 Spring中的Bean是一个很重要的概念.Spring作为一个Bean容器,它可以管理对象和对象之间的依赖关系,我们不需要自己建立对象,把这部分工作全部转交给容器完成 ...

  6. Spring入门篇——第3章 Spring Bean装配(上)

    第3章 Spring Bean装配(上) 介绍Bean的作用域.生命周期.Aware接口.自动装配和Resource等内容. 3-1 Spring Bean装配之Bean的配置项及作用域 从上至下依次 ...

  7. spring Bean装配的几种方式简单介绍

    Spring容器负责创建应用程序中的bean同时通过ID来协调这些对象之间的关系.作为开发人员,我们需要告诉Spring要创建哪些bean并且如何将其装配到一起. spring中bean装配有两种方式 ...

  8. Spring Bean装配学习

    解释:所谓装配就是把一个类需要的组件给它设置进去,英文就是wire,wiring:注解Autowire也叫自动装配. 目前Spring提供了三种配置方案: 在XML中进行显式的配置 在Java中进行显 ...

  9. Spring bean注入方式

    版权声明:本文为博主原创文章,如需转载请标注转载地址. 博客地址:http://www.cnblogs.com/caoyc/p/5619525.html  Spring bean提供了3中注入方式:属 ...

随机推荐

  1. GNU/Linux-MariaDB

    第一章 基础知识 基本术语 数据库(Database) 存储已经组织好的数据的 容器(通 常是 一个文件或者文件集) 人们经常使用术语"数据库"来指代他们运行的数据库软件,这是错 ...

  2. sql server 把数据 复制成脚本文件

    问题描述:想把一个数据库里的表和字段复制到另一个数据库里: 方法一:a.生成脚本文件 选择数据库右键->任务->生成脚本: b. 选择特定的数据库对象->下一步: c.高级-> ...

  3. Android 之json解析

    JSON(JavaScript Object Notation) 定义:字符串 键值对 解析方法有JSON,谷歌GSON,阿里巴巴FastJSON(推荐) 一种轻量级的数据交换格式,具有良好的可读和便 ...

  4. 关于IOS的屏幕适配(iPhone)——资源适配

    IOS的屏幕适配几乎不需要大量的代码操作,更多的时间我们只是动动鼠标选择一下就搞定.可以苹果在这方面做的还是比较人性的,解放了开发者. 首先来说说Iphone这几种屏(由于最近做的是iPhone AP ...

  5. oracle 数据库管理员

    一.数据库管理员每个oracle数据库应该至少有一个数据库管理员(dba),对于一个小的数据库,一个dba就够了,但是对于一个大的数据库可能需要多个dba分担不同的管理职责.那么一个数据库管理员的主要 ...

  6. Spring中的Service/DAO/DTO

  7. Grunt针对静态文件的压缩,版本控制打包方案

    在讲之前先谈谈大致步骤:安装nodejs -> 全局安装grunt -> 项目创建package.json --> 项目安装grunt以及grunt插件 -> 配置Gruntf ...

  8. M方法

    ThinkPHP函数详解:M方法 M方法用于实例化一个基础模型类,和D方法的区别在于:1.不需要自定义模型类,减少IO加载,性能较好:2.实例化后只能调用基础模型类(默认是Model类)中的方法:3. ...

  9. Cornfields poj2019 二维RMQ

    Cornfields Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submit S ...

  10. Windows下Apache添加SSL模块

    参考资料:http://www.yuansir-web.com/2011/05/12/hello-world/测试环境:windows2003 32位 + Apache2.4 + PHP5.4 一.准 ...