Spring整合Mybaits
目标:用Spring方式取缔Mybatis中的SqlMapConfig.xml配置文件
1、开启注解扫描
@Configuration //声明当前类为Spring配置类
//设置bean扫描路径,多个路径书写为字符串数组格式等价于<context:component-scan base-package=“com.itheima”/>
@ComponentScan({“com.itheima.service”,“com.itheima.dao”})
2、加载外部文件(和导入其他配置类)
-
@PropertySource:加载外部文件
-
@PropertySource(“classpath:jdbc.properties”)
//classpath:相对于resources包下文件
@Import//导入其他配置类的信息(目的:将配置类分类,然后导入Spring配置类)
3、配置Mapper映射扫描和别名配置
附:别名配置
在 cn.com.mybatis.pojo 包里可能也会存在多个 JavaBean,这时候一个一个配置别名就会很麻烦,这时候就需要批量定义别名,批量指定很简单,只要指定包名即可,之后程序会为包下的所有类都自动加上别名,其定义别名的规范就是对应包装类的类名首字母变为小写,其示例代码如下:
<typeAliases>
<package name="cn.com.mybatis.pojo"/>
</typeAliases>
这时设置的包名下的类就都有了别名,别名就是类名(首字母小写),User 类,其别名就为 user。
另外一种别名配置方式,直接使用@Alias
@Alias("user")
public class User{
...}
4、数据库环境配置(外部文件注入属性)
5、开始测试
1、Spring注解获取上下文容器对象的方式和Mybatis的不同(因为不再使用SqlMapConfig.xml文件),直接加载Spring.class来获取上下文容器对象
2、可从Spring容器中直接getBean来使用
public class App2 {
public static void main(String[] args) {
//在上方Spring配置完成后,可以直接加载Spring.class来获取上下文容器对象
// (该对象配置好了数据库的相关操作)
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
//由Service来查询
AccountService accountService = ctx.getBean(AccountService.class);
Account ac = accountService.findById(1);
System.out.println(ac);
}
}
Spring整合Junit
1、导入依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
2、开始测试
@RunWith
就是一个运行器,后面加什么反射就是使用什么环境来运行
——
@RunWith(SpringJUnit4ClassRunner.class)
,让测试运行于Spring测试环境
@ContextConfiguration(classes = SpringConfig.class) //引入配置,
Spring整合JUnit4测试时,使用注解引入多个配置文件
//设置类运行器
@RunWith(SpringJUnit4ClassRunner.class)
//设置Spring环境对应的配置类——告诉test类相关配置
@ContextConfiguration(classes = SpringConfig.class)
public class AccountServiceTest {
//支持自动装配注入bean(想要测试的对象)
@Autowired
private AccountService accountService;
@Test
public void testFindById(){
System.out.println(accountService.findById(1));
}
@Test
public void testFindAll(){
System.out.println(accountService.findAll());
}
}
专栏文章:
Spring框架(一):概述及简单使用(基于XML方式)