Spring基础知识之装配Bean

装配(wiring):创建应用对象之间协作关系的行为。这是依赖注入的本质。

Spring配置的可选方案

  Spring提供了三种装配机智:

    1)在XML中进行显示装配

    2)在java中进行显示装配

    3)隐式Bean发现机制和自动装配


自动化装配

  Spring从两个角度来实现自动化装配:

    1)组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。

    2)自动装配(autowiring):Spring自动满足bean之间的依赖。

  创建可被发现的bean

  案例:使用CD与CD播放器来实现为什么有注入跟依赖。

  CD:作为一个接口,定义了CD播放器对CD的一系列操作,同时将CD播放器与CD本身的耦合降到最低

public interface CompactDisc {
    void play();
}

  CD的具体实现:

  注:@Component。这个注解表明该类会作为组件类,并告知Spring要为这个类创建bean。

@Component
public class SgtPeppers implements CompactDisc {
    private String title = "Sgt .Pepper‘s Lonely Hearts Club Band ";
    private String artist = "The Beatles";
    public void play() {
        System.out.println("Playing " + title + "  by " + artist);
    }
}

  配置组件扫描类:

  注:@ComponentScan,该注解会默认扫描配置类的包及其子包下所有带有@Component的类

    如果使用XML格式的话使用:<context: component-scan>元素

@ComponentScan
@Configuration
public class CDPlayerConfig {
}

  测试类代码:

  注:@ContextConfiguration会告诉它需要在CDPlayerConfig中加载配置,而CDPlayerConfig包含注解@ComponentScan,会对其包及其子包下的所有带有@Component类扫描,并为其生成bean

@ContextConfiguration(classes = CDPlayerConfig.class)
public class CDplayerTest {

    @Autowired
    private CompactDisc compactDisc;

    @Test
    public void Test() {
        compactDisc.play();
    }
}

  为组件扫描的bean命名

  Spring应用上下文中所有的bean都会给定一个ID。默认是小写类名。

  若想改变这个ID:只要修改注解即可

@Component("myselfBean")
public class SgtPeppers implements CompactDisc {
。。。
}

  设置组件扫描的基础包

    我们目前没有为@ComponentScan设置任何属性,默认会以配置类所在的包为基础包来扫描组件。

    可以通过以下设置扫描包名称:

@Configuration
@ComponentScan("com")
public class CDPlayerConfig {
}

    若想指明基础包:

@Configuration
@ComponentScan(basePackages = "com")
public class CDPlayerConfig {
}

    还可以扫描多个基础包:

@Configuration
@ComponentScan(basePackages = {"com","cn"})
public class CDPlayerConfig {
}

    还提供了另一种方法,将指定为包中所包含的类或接口:

    注:可以为一定要扫描的包中创建一个专门用于扫描的组件类,

@Configuration
@ComponentScan(basePackageClasses = {CDPlayerConfig.class, Test.class})
public class CDPlayerConfig {
}

  通过为bean添加注解实现自动装配

    自动装配:Spring自动满足bean依赖的一种方式。可以借助@Autowired实现自动装配。

@Component
public class CDPlayer implements MediaPlayer{
    @Autowired
    private CompactDisc compactDisc;

    public void play() {
        compactDisc.play();
    }
}

通过java代码装配bean

创建配置类

  注:@Configuration表明该类是一个配置类,该类应该包含Spring应用上下文中如何创建bean的细节。

@Configuration
public class CDPlayerConfig {
}

声明简单的bean

  注:@Bean会告诉Spring返回的对象是Spring应用上下文的bean。@Bean的name属性可以设置其名称,默认情况下名称与方法名一致。

@Configuration
public class CDPlayerConfig {
    @Bean
    public CompactDisc getCompactDisc() {
        return new SgtPeppers();
    }
}

XML格式的就不在记录

原文地址:https://www.cnblogs.com/lilinzhiyu/p/8118414.html

时间: 2024-10-05 05:58:40

Spring基础知识之装配Bean的相关文章

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

主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expression Language 在装配bean—依赖注入的本质一文中,我们探讨了Spring的三种管理bean的方式:自动装配.基于JavaConfig.基于XML文件.这篇文字将探讨一些Spring中关于bean的管理的高级知识,这些技能你可能不会每天都用,但是非常重要. 3.1 Environments

spring基础知识(三)——aop

spring基础知识(三)--aop面向切面编程 1.概念术语 aop面向切面编程(Aspect ariented Programming) 在开始之前,需要理解Spring aop 的一些基本的概念术语(总结的个人理解,并非Spring官方定义): 切面(aspect):用来切插业务方法的类. 连接点(joinpoint):是切面类和业务类的连接点,其实就是封装了业务方法的一些基本属性,作为通知的参数来解析. 通知(advice):在切面类中,声明对业务方法做额外处理的方法. 切入点(poin

Spring基础知识1--环境搭建、bean创建、依赖注入、注解注入

一.Spring两大核心内容 1.控制反转IOC/DI:  应用本身不负责对象的创建和维护,对象和依赖对象的创建完全交给容器管理. 2.AOP(面向切面编程):通过预编译的方式,在运行期通过动态代理的方式来实现的一种技术 (1)在项目中使用AOP管理事务,事务的开启,提交,回滚 (2)在项目中管理事务的传播特性. 二.Spring的环境搭建 1.导包:   2.创建Spring的配置文件 ApplicationContext.xml 1 <?xml version="1.0" e

Spring之IOC&amp;DI/装配Bean(一)

简介 今天学习Spring的第一天,无非也就是入门基础知识.主要了解IOC和DI部分,要熟练掌握哦~ Spring简介 1. Spring介绍 Spring是一个非常活跃的开源框架:它是一个基于Core来构架多层JavaEE系统的框架,它的主要目地是简化企业开发. Spring以一种非侵入式的方式来管理你的代码,Spring提倡"最少侵入",这也就意味着你可以适当的时候安装或卸载Spring 2. Spring框架的优势 ?方便解耦,简化开发 ?Spring就是一个大工厂,可以将所有对

Spring基础知识详解

Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯. 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB. 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们. 面向切面的

Spring基础知识及入门

---恢复内容开始--- 1 spring框架概述 1.1 什么是spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架.Sprin

spring基础知识汇总及常见面试题目总结

Spring简介 Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版.Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率. Spring总结起来优点如下: 低侵入式设计,代码的污染极低. 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺. Spring的IoC容器降低了业务对象替换的复杂性,提高

Spring 基础知识

Spring架构简单描述 原文:https://www.shiyanlou.com/courses/document/212 Spring 概述 1. Spring 是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发.应用程序是由一组相互协作的对象组成.而在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成.所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作

Spring基础知识之基于注解的AOP

背景概念: 1)横切关注点:散布在应用中多处的功能称为横切关注点 2)通知(Advice):切面完成的工作.通知定了了切面是什么及何时调用. 5中可以应用的通知: 前置通知(Before):在目标方法被调用前调用通知功能. 后置通知(After):在目标方法完成后调用通知,此时不会关系方法输出什么. 返回通知(After-returning):在目标方法成功执行后调用通知. 异常通知(After-throwing):在目标方法抛出异常后调用通知. 环绕通知(Around):通知包裹了被通知的方法