zoukankan      html  css  js  c++  java
  • 【Spring实战4】04---装配Bean(自动装配)

    主要内容:

    • 声明Bean
    • 构造器注入和Setter方法注入
    • 装配Bean
    • 控制bean的创建和销毁

    Spring装配Bean的3种机制

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

    1、自动化装配Bean,
    组件扫描:spring会自动发现应用上下文所创建的Bean

    自动化装配:Spring自动满足bean之间的依赖

    例:CD需要插入Cd播放器中,那么cd才可以播放或者或者说注入,以spring编写

    定义Cd的概念,实现CompactDisc接口

    package nh.spring.ioc.beans;
    
    /**
     * Created by niuh on 11/2/2016.
     */
    public interface CompactDisc {
        void play();
    }

    Cd可以有很多实现类,比如某人的某个专辑,用@Component注解完成实现类

    package nh.spring.ioc.beans;
    
    import org.springframework.stereotype.Component;
    
    /**
     * Created by niuh on 11/2/2016.
     */
    
    @Component
    public class sgtPappers implements CompactDisc {
        private String title = "nice!!!!!!!";
        private String artist = "heng";
    
        @Override
        public void play() {
            System.out.print("title is " + title + " by " + artist);
        }
    }

    @Component注解,表面该类是个组件类,告知Spring要为这个类自动创建bean,不过默认组件扫描是不启用的,利用@ComponentScan启用组件扫描

    package nh.spring.ioc.beans;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * Created by niuh on 11/2/2016.
     *
     */
    
    @Configuration
    @ComponentScan
    public class CdPlayConfig {
    }

    整理一下,类CdPlayConfig在实例化时,通过java定义的spring装配规则,@ComponentScan注解在Spring中启用组件扫描,默认扫描与配置类相同的包,以及子包。查找所有带有@Component注解的类,这样就能找到CompactDisc,并为其创建一个Bean,完成组件扫描与自动装配。

    在上面代码中Spring应用上下文会为Bean自动分配一个id,规则为首字母小写,如果期望可以自定义id,则如下:

    @Component("myId")

    也可以使用java依赖注入中提供@Named设置ID

    @Named("myId")

    通过ComponentScan的basePackages属性设置自动扫描的包

    @ComponentScan(basePackages = "nh.spring.ioc")

    最后通过注解为bean实现自动装配

    package nh.spring.ioc.beans;
    
    import org.springframework.beans.factory.annotation.Autowired;
    
    /**
     * Created by niuh on 11/2/2016.
     */
    public class CDplay implements MediaPlayer {
        private CompactDisc cd;
    
        @Autowired
        public CDplay(CompactDisc cd) {
            this.cd = cd;
        }
    
        @Override
        public void play() {
            cd.play();
        }
    }
    

    使用Spring应用上下文寻找匹配摸个bean需求的其他bean,例子中表面Spring创建Cdplay时,会通过构造器来进行实例化并要找到一个CompactDisc类型的bean;

  • 相关阅读:
    Eclipse 远程调试
    大数据处理方法bloom filter
    sicily 1259 Sum of Consecutive Primes
    sicily 1240. Faulty Odometer
    sicily 1152 简单马周游 深度优先搜索及回溯算法
    sicily 1050 深度优先搜索解题
    sicily 1024 邻接矩阵与深度优先搜索解题
    sicily 1156 二叉树的遍历 前序遍历,递归,集合操作
    sicily 1443 队列基本操作
    sicily 1006 team rankings 枚举解题
  • 原文地址:https://www.cnblogs.com/hylinux/p/6023850.html
Copyright © 2011-2022 走看看