装配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 {
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

POF技术分享(二):POF交换机源码结构

一:函数调用关系图 POF交换机先会进行基本配置的初始化、交换机资源初始化等,然后开启交换机与控制器通信进程,建立连接进行通信,最后开启基于流表的数据包匹配与处...

38870
来自专栏AndroidTv

再写个Gradle脚本干活去,解放双手前言Gradle 脚本

26540
来自专栏Java架构

我是这样手写Spring的,麻雀虽小五脏俱全

人见人爱的Spring已然不仅仅只是一个框架了。如今,Spring已然成为了一个生态。但深入了解Spring的却寥寥无几。这里,我带大家一起来看看,我是如何手写...

7310
来自专栏蓝天

Zookeeper客户端cli_st为何在crontab中运行不正常?

实践中,发现直接在命令行终端运行cli_st时,能够得到预期的结果,但一将它放到crontab中,则只收到:

11110
来自专栏xingoo, 一个梦想做发明家的程序员

JSP与JavaBeans

  JavaBeans简介   JavaBeans是一种符合一定标准的普通java类,需要满足下面几点:   1 类是public   2 属性私有   3 空...

22760
来自专栏瞎说开发那些事

[Java并发系列] Java并发机制的底层实现

18550
来自专栏木木玲

Netty in Action ——— ChannelHandler 和 ChannelPipeline

25030
来自专栏finleyMa

PHPStorm File and Code Template

有时候我们想新建某类型文件的时候,默认出现一些基础代码,而不是空白的。 比如当新建一个 html 文件 基础代码是这样的:

9720
来自专栏编程软文

快速上手友盟推送前后端

35750
来自专栏fixzd

redis系列:基于redis的分布式锁

这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁。会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁。

16220

扫码关注云+社区

领取腾讯云代金券