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;

  • 相关阅读:
    Yii Listview 更新及搜索
    Yii框架CGridView columns中使用数组或变量传值
    冲刺七天---05
    冲刺七天---04
    爱心图书剧本描述
    冲刺七天----03
    冲刺七天---02
    冲刺七天---01
    PSP周总结03
    psp周总结02
  • 原文地址:https://www.cnblogs.com/hylinux/p/6023850.html
Copyright © 2011-2022 走看看