java spring定义类,Spring(17)——使用Java类的形式定义bean(三)

17.4 组合多个配置

通常在使用基于Java类的配置时我们可能不是单独使用一个Java类进行配置,有的时候可能会建立多个Java类进行配置,也可能是基于Java类的配置和基于XML的配置一起使用,这就需要我们将多个配置整合在一起了。

17.4.1 多个Java类配置组合

对于多个Java配置类的情况,我们可以通过将@Import标注在对应的配置类上以引入另外一个配置类,这样我们在使用的时候就可以只以其中的某个或某几个配置类来直接作为配置类。如下示例我们在配置类SpringConfig上使用@Import引入了另外两个配置类ServiceConfig和DaoConfig。

@Configuration

@Import({ServiceConfig.class, DaoConfig.class})

public class SpringConfig {

}

那么对应在使用的时候我们可以只显示的使用SpringConfig作为配置类,但实际上是使用了SpringConfig、ServiceConfig和DaoConfig三个配置类,即如下示例中的context将包含这三个配置类中定义的所有的bean。

@ContextConfiguration(classes={SpringConfig.class})

@RunWith(SpringJUnit4ClassRunner.class)

public class ConfigurationTest {

@Autowired

private ApplicationContext context;

}

17.4.2 以Java类配置为主组合XML配置

当以Java配置类为主组合XML配置时我们只需要在Java配置类上使用@ImportResource进行标注以引入对应的XML配置即可。如下示例中我们即通过@ImportResource引入了类路径下的applicationContext.xml,这样我们可以继续使用SpringConfig作为配置类,但其中会包含applicationContext.xml中定义的bean。

@Configuration

@ImportResource({"classpath:applicationContext.xml"})

public class SpringConfig {

@Bean

public Hello hello() {

return new Hello();

}

}

17.4.3 以XML配置为主组合Java类配置

由于@Configuration是标注了@Component的,所以以XML配置为主时,如果我们的XML配置定义了,且其能扫描到我们使用了@Configuration进行标注的配置类,那么对应的配置类将作为一个bean定义到对应的bean容器中。与此同时,Spring能检测到其中使用@Bean进行标注的方法,并把它们作为一个bean进行定义。其实如果我们的配置类不是使用的@Configuration进行标注的,而是使用的其它Spring会把它当做一个bean进行定义的注解进行标注也是可以的,如@Component、@Service等。

但是当我们在XML配置中没有使用或者对应的扫描不到我们基于Java的配置类,这个时候就需要我们自己在XML配置中定义对应的bean了,这样Spring就能自动组合基于Java类配置的bean定义了。

自己单独在XML配置中定义Java配置类对应的bean时,如果我们的配置类中有使用@Autowired进行自动注入,那就需要启用。当然如果使用了就可以不再单独指定了,因为默认会启用。

(注:本文是基于Spring4.1.0所写)

本文转自:https://elim.iteye.com/blog/2389626

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值