• 装配bean


    spring有三种装配bean的方式:隐式装配、java代码装配、xml装配

    隐式装配最为省事方便,也称为自动化装配

    这三种装配方式可以混搭着来用

    在这里通过一个例子来讲述配置

    CD的两个实现,一个是ThinkingJAVA,一个是LinuxBird
    注解配置
    定义bean

    @Component
    public class ThinkingJAVA{
    public void play(){
      System.out.println("java思想");
    }
    }

     
    在这里ThinkingJAVA被Component标识成一个bean,bean的id自动为thinkingJAVA

    @Component
    public class CDPlayer {
    @Autowired(required=true)
    public CD cd;
    public void play(){
      cd.play();
    }
    }

     
    cdPlayer中有一个自动cd,被标识为自动装配,且一定会装配,如果容器中不存在CD类型的bean,那么就会报错,如果required=false,则表示可装配时装配,如果没有的装配则不会去装配
    隐式装配

    隐式装配既自动扫包

    通过java代码开启自动扫包

    @Configuration
    //扫描当前类的包及其自包
    //@ConponentScan()
    //扫描string指定包及其子包
    //不推荐这种方式,不利于代码重构,也不好检查错误
    //@ConponenetScan(basePackages="soundsystem")
    //扫描指定class所在的包及其子包
    //推荐这种方式,利于代码重构
    //可以设置一个空接口用来标识基础包
    //表示扫描CD类和CDPlayer所在的包及其子包
    @ConponentScan(basePackageClasses={CD.class,CDPlayer.class})
    public class CDPlayerConfig {
    }

     

    最好把配置的类单独放在配置包,不要跟业务逻辑搅在一起
    xml开启自动扫包

    <context:component-scan base-package="要扫描的包及其子包"></context:component-scan>

    在xml文件中加上这么一句
    java代码装配

    @Configuration
    public class CDPlayerConfig {
    //指定bean
    @Bean
    public ThinkingJAVA thingkingJAVA(){
    return new ThinkingJAVA();
    }
    @Bean
    public CDPlayer cDPlayer(){
    return new CDPlayer();
    }
    }

     

    bean的id就是方法名

    可以用java代码来构造出实例,所以很强大,有很多种可能性

    混搭装配
    java代码装配和xml装配可以整合起来
    将两个java装配类合为一个

    将他们合为一个SoundsystemConfig.class

    @Configuration
    @Import(CDConfig.class,CDPlayer.class)
    //如果要整合xml
    //@ImportResource(&quot;classpath:cdconfig.xml&quot;)
    public class SoundsystemConfig {
    }
  • 相关阅读:
    Code First数据库迁移
    创建静态报表
    JavaScript prototype
    把事务封装成类似Serializable用法的特性
    我的开发框架(WinForm)2
    使用 NPC,NPCManager 在 XNA 中创建 NPC
    ExtJs控件属性配置详细
    Python+Django+Eclipse 在Windows下快速开发自己的网站
    C++ const && 二叉树合集
    验证视图状态 MAC 失败,解决方法
  • 原文地址:https://www.cnblogs.com/wewill/p/5665329.html
Copyright © 2020-2023  润新知