一,问题,Bean找不到

代码

@Component
public class DemoClass { public int doSth() {
return ;
}
}

测试代码

@RunWith(SpringJUnit4ClassRunner.class)
public class DemoClassTest { @Autowired
private DemoClass demoClass; @Test
public void doSth() {
Assert.assertEquals(1, demoClass.doSth());
}
}

虽然DemoClass打了@Component注解,但是在测试代码中@Autowired是找不到到,因为DemoClass是没有被Spring装配到容器中。

Spring把Bean装配到容器主要有以下几种方式

二、通过代码方式

@Configuration注解的方式

新建一个类,增加@Configuration注解

@Configuration
@ComponentScan(basePackages = "com.purespring.demo")
public class DemoConfiguration { }

这里面还有一个@ComponentScan,这个注解告诉Spring要扫描的包,Spring会通过这个配置把这个包下面的组件全部装配到容器中。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = DemoConfiguration.class)
public class DemoClassTest { @Autowired
private DemoClass demoClass; @Test
public void doSth() {
Assert.assertEquals(1, demoClass.doSth());
}
}

测试通过。

@Bean的方式

@Configuration
public class DemoConfiguration {
@Bean
public DemoClass demoClass() {
return new DemoClass();
}
}

上面代码里面已经移除了@ComponentScan的注解,Spring不会做自动扫描,

@Bean会告诉Spring这个方法会返回一个对象,该对象需要被注册成一个Spring Bean

三、通过XML配置

增加xml配置,命名为demoConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.purespring.demo"></context:component-scan>
</beans>

在测试代码中引入配置

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/demoConfig.xml")
public class DemoClassTest { @Autowired
private DemoClass demoClass; @Test
public void doSth() {
Assert.assertEquals(1, demoClass.doSth());
}
}

测试通过。

最新文章

  1. MySQL:Fabric 安装
  2. [知识笔记]Java 基本数据类型的大小、取值范围、默认值
  3. PYTHON 函数的普通参数
  4. Android Studio快捷键每日一练(3)
  5. (转载)关于web端功能测试的测试方向
  6. 日期操作类--Date类
  7. ASP.Net 获取当前时间,包含各种时间格式
  8. 关于HTML代码的转义
  9. Linux ln命令 - 建立文件/目录链接
  10. java基础之 IO流
  11. mycat 配置全局表
  12. ABP从入门到精通(1):aspnet-zero-core项目启动及各项目源码说明
  13. GCD之死锁体会
  14. 本地通知UILocalNotification
  15. 转载Alpine基础
  16. GBT 31000-2015 社会治安综合治理基础数据规范 数据项 编码
  17. Centos 下 JProfiler 9.1.1 安装 部署 及 使用
  18. 广度优先搜索(BFS)----------------(TjuOj1140_Dungeon Master)
  19. 内置函数bytes()
  20. 《Bilateral Multi-Perspective Matching for Natural Language Sentences》(句子匹配)

热门文章

  1. 攻防世界web-unserialize3
  2. web之ics-06
  3. C++ class外的==重载,判断相等,测试等于,重载示例。二元操作符
  4. django自定义错误处理
  5. INVERSION包
  6. 《计算机网络第7版》PDF+《计算机网络释疑与习题解答第7版》PDF
  7. Java实现输出“杨辉三角”
  8. R语言算法 ▪ 计算随意输入的两数之间的区域和
  9. Singnal R 练习参考
  10. Kubernetes Job与CronJob(离线业务)