spring 自动装配(1)

本文详细介绍了JUnit4在Java中的应用,包括其注解机制及配置方法,并深入探讨了Spring框架中的自动装配,涵盖了@Component、@Configuration、@ComponentScan等注解的使用,以及通过Java代码配置Bean的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.JAVA JUint

JUint的机制和自动装配很像,而且代码里面也多次用到JUint的功能。

JUnit是Java单元测试框架,已经在Eclipse中默认安装。

JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有:

  • @BeforeClass 全局只会执行一次,而且是第一个运行
  • @Before 在测试方法运行之前运行
  • @Test 测试方法
  • @After 在测试方法运行之后允许
  • @AfterClass 全局只会执行一次,而且是最后一个运行
  • @Ignore 忽略此方法

JUint的配置方法为右键项目-peoperties-Java Build Path-Libraries-Add Library-JUint

然后右键选择新建 New JUnit Test Case

 

2.自动装配

  • @Component  该类会作为组件类,可以被扫描到
  • @Configuration  会告诉spring在该主借的类中加载配置
  • @ComponentScan 启用组件扫描,spring会扫描Configuration所在的包以及所有子包下带有@Component注解的类
  • @RunWith(SpringJUnit4ClassRunner.class)  在测试的时候自动创建spring上下文
  • @Autowired  bean注入

@ComponentScan默认会扫描配置类所在的包,但是想要扫描别的包或者多个包的时候可以这样调用

@ComponentScan(basePackageClasses = {config1.class, config2.class})

虽然还有别的调用方法,但是推荐这样也,更安全

 

3.通过JAVA代码配置

JAVA代码配置其实和自动配置看下去差不多,它使用的是注释@bean。

区别于自动装配,在很多第三方库中没有办法进去编辑源码添加@Component注释使类被扫描到,所以会使用@bean注释。

@bean这个注释会告诉spring此方法会返回一个对象,该对象会在注册成为spring上下文中的bean。

这里相当于半手动的创建spring中的bean,bean的id同方法名,即下面的两个bean的id为compactDisc和cdPlayer

@Configuration
public class CDPlayerConfig {
  
  @Bean
  public CompactDisc compactDisc() {
    return new SgtPeppers();
  }
  
  @Bean
  public CDPlayer cdPlayer(CompactDisc compactDisc) {
    return new CDPlayer(compactDisc);
  }

}

spring中的bean默认是单例的,所以spring会拦截多余的同类调用(带有@bean注释的同类方法)

4.高级装配

  • @profile 设置bean的环境
  • @Conditional  条件化bean
  • @Primary 装配时如果发现多个适合的bean 优先装配带有此注解的bean
  • @Qualifer 限定

1.@profile

同一个应用程序经常会面对多个开发环境,在不同的开发环境迁移的时候,如何为每种开发环境选择最为合适的配置

带有@profile注解的bean,只有当该注解标明的profile被激活的时候,该bean才会被创建,该注解可以用于类,也可以用于方法。

需要在xml显示的设置激活的profile

 

2.Conditional

条件化的bean,实现只有当某种情况发生(某环境存在,某个类被创建,某资源存在等等),注解需要指明实现了Conditional接口的类(该类中对各种条件进行判断,返回true或false)

 

3.@Primary  @Qualifer装配中的歧义性

如三个类都实现了Dessert接口且都有@Component接口,那么在扫描注入时这三个类都适合Dessert类型的接口。

@Primary出现歧义时的首选项

@Qualifer限定符 与Autowired协同,指定当前想要注入的是哪个bean

可以创建自定义的限定符而不依靠beanid(实际上相当于自动装配时候的另一种id形式)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值