Junit的核心Runner在执行的时候不会创建容器.同时它字节码文件,也改不了 spring整合junit 想办法把junit里面的不能加载容器的main方法换掉.从而实现创建容器.有了容器就可以实现注入 导入spring-test这个包.在pom.xml内配置 Junit包下面有RunWith这么个注解 这里要求的是一个字节码,并且是集成Runner的 所以这里配置的是SpringJUnit4ClassRunner.class 点开.SpringJUnit4ClassRunner 这个类集成…
数据库的链接 次数是写死的 新建配置文件 定义成员变量 value注解实现 与配置文件的key对应 PropertySource 要想让spring去读取这个配置文件 resource编译后都跑到了.工作空间类路径下 PropertySource怎么识别类路径呢? 前面加上classpath:来表示类路径 如果前面还有包的话,也可以这么配置.有包写包 没有包 这里就不用写 单词拼错了 这里的单词写错了 再次运行 总结 纯注解的方式比直接配置xml的方式反而更费事. 选择既有注解又有xml的方式…
下面要解决第二部分的配置问题 这两行一出场,就表示可以通过调用构造函数实例化.因为这都是newInstance 上面的需要加上参数,下面的没有任何参数 下面这俩实现的效果不一样. 下面这个除了会创建对象,还会扔到spring的IOC容器中.前面的runner就是key后面的创建对象就是Value 上面的方法createQueryRunner只是一个方法,不会存到Spring容器中 那么我就需要一个方法把返回值存入到Spring的容器中.那么就是实现了和配置xml同样的效果 @Bean注解 spr…
复制上面的数据源到下面改改名字 现在就是有两个数据源 创建一个eesy02的数据库 找到sql语句再创建Account表 现在就相当于有连个库一个eesy一个是eesy02这连个库. account里面有三条记录 eesy的库内有5条数据 把数据源2的数据库地址改成eesy02这个库 执行测试类.查询出来5条记录 如果这里的id改成ds2 再次运行测试方法就会报错 需要一个对应的bean,.但是找到了两个bean 这里改成ds1 这就证明连的是eesy02这个库 这里其实隐藏了一个Autowir…
把Configuration的直接先注释掉 那么运行测试类的查询所有 并不影响我们的使用 不写同样可以执行的原因是因为这里把SpringConfiguration这个类作为方法传入进去了 新建 SpringConfiguration里面的配置都剪切到JdbcConfig里面 运行测试查询所有的方法就会报错 测试把config文件也配置上扫描 再次运行同样报错 扫描这个包下面所有的类.首先必须要认为JdbcConfig是一个配置类才会对里面的注解进行扫描 给JdbcConfig类加上@Config…
目前这个配置文件除了导约束就没有其他的内容了. 删除这个bean.xml文件 但是测试类里面还是读取的xml的信息 注解 查看ApplicationContext的 关系图 查看实现类的实现类 之前我们一直都应的是ClassPathXmlApplicationContext ClassPathXmlApplicationContext的上面有一个AnnotationConfigApplicationContext 备注接的类.就是被@Configuration注解过的类 把后面的测试方法都替换掉…
解决测试类重复代码的问题,xml还是存在的问题,没法脱离xml文件 要想在QueryRunner上加注解,是加不了的 创建工程 复制依赖项到pom.xml 复制注解的工程里面的com文件夹 配置文件bean.xml也复制过来 再把测试类复制过来 要拿掉xml的配置 创建配置类 就需要有一个和xml功能相同的注解出现. configuration configuration注解 之前在xml里面的配置需要用context: component-scan标签来配置 ComponentScan Sca…
测试类重复代码的问题 这是之前的方式 运行findAll的方法,没有问题 测试人员不需要关心上面的方法,.应该关心的各个方法是否能够正常的运行 对于一个测试工程师,只要写完变量就可以测试了. 可以使用Autowired自动注入.但是 运行还是空指针异常 分析 出现问题的原因是没有容器,所以无法注入 也就是IaccountService这个对象就是null…
按类型自动装配可能多个bean实例的情况,可以使用Spring的@Qualifier注解缩小范围(或指定唯一),也可以指定单独的构造器参数或方法参数 可用于注解集合类型变量 例子: package com.mypackage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; public cla…
问题:当一个接口实现由两个实现类时,只使用@Autowired注解,会报错,如下图所示 实现类1 实现类2 controller中注入 然后启动服务报错,如下所示: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean…