美文网首页
spring in action: 第二章装备Bean

spring in action: 第二章装备Bean

作者: JavaLearner | 来源:发表于2018-05-05 02:09 被阅读0次

自动装备

最常用的一种方法了

代理这样写自后扫描包以及子包

@Component
public class SgtPeppers implements CompactDisc {
}

@Component
public class CDPlayer {
@Autowired
 private CompactDisc cd;
}

@Configuration
@ComponentScan
public class CDPlayerConfig {
}

ComponentScan的参数

@ComponentScan({"com.my.package.first","com.my.package.second"})
@ComponentScan("com.my.package")
@ComponentScan(basePackageClasses={CDPlayer.class, DVDPlayer.class})

或者写在配置文件里

<context:coponent-scan base-package="soundsystem"/>

java代码中创建Bean

@Configuration
public class CDPlayerConfig {
@Bean
public CompactDisk sgtPeppers() {
  return new SgtPeppers();
}

@Bean
public CDPlayer cdPlayer() {
  // 这里看起来是每次new出来其实被spring拦截了
  // 只new了一个
  // 还可以写在参数里会更清楚一些
  return new CDPlayer(sgtPeppers()); 
}

@Bean
public XXPlayer xxPlayer(CompactDisk disk) {
  return new XXPlayer(disk);
}
}

使用xml装备

不推荐使用,但是有一些第三方库使用了xml创建bean,那么没有办法了。

混合配置

一些第三方库使用了XML可以使用JavaConfig导入XML配置

@Configuration
public class CDConfig {
  @Bean
   public CompactDisc compactDisc() {
      return new SgtPeppers();
   }
}

@Configuration
@Import(CDPlayerConfig.class) // 作用是引入CDPlayerConfig定义的Bean
@ImportResource("classpath:cd-config.xml")
public SoundSystemConfig {
}

相关文章

网友评论

      本文标题:spring in action: 第二章装备Bean

      本文链接:https://www.haomeiwen.com/subject/koxsrftx.html