继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【金秋打卡】第10天 使用Java Config方式实现Spring Ioc

慕瓜6049866
关注TA
已关注
手记 28
粉丝 0
获赞 0

课程信息

  • 学习课程:Java工程师2022版
  • 章节名称:Spring Ioc容器与Bean管理-使用Java Config方式实现Spring Ioc
  • 讲师:悟空

课程内容

基于Java Config配置IoC容器

1、基于Java Config的优势:

完全摆脱XML的束缚,使用独立Java类管理对象与依赖

注解配置相对分散,利用Java Config可对配置集中管理

可以在编译时进行依赖检查,不容易出错

2、Java Config核心注解:

@Configuration:描述类,说明当前类是Java Config配置类,完全替代XML文件

@Bean:描述方法,方法返回对象将被IoC容器管理,beanId默认为方法名

@ImportResource:描述类,加载静态文件,可使用@Value注解获取

@ComponentScan:描述类,同XML的context:component-scan标签。

@Configuration //当前类是配置类,完全替代文件applicationContext.xml
@ComponentScan(basePackages="com.imooc")
public class Config{
    @Bean //Java Config利用方法创建对象,将方法返回对象放入容器,beanId=方法名
    public UserDao userDao() {
        UserDao userDao = new UserDao();
        return userDao;
    }

	@Bean
    //先按name尝试注入,name不存在则按类型注入
    public UserService userService(UserDao userDao) {
        UserService userService = new UserService();
        userService.setUserDao(userDao);
        return userService;
    }

    @Bean
    public UserController userController(UserService userService){
        UserController userController = new UserController();
        userController.setUserServcie(userService);
        return userController;
    }
    
}
public class SpringApplication{
    public static void main(String[] args){
        //基于Java Config配置Ioc容器的初始化
        ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
        String[] ids = context.getBeanDefinitionNames();
        for(String id : ids){
            System.out.println(id+ ":"+context.getBean(id));
        }
    }
}

javaconfig初始化ioc容器和注解初始化ioc容器的代码不冲突:也可以使用@scope,@primary注解,此时他们就写在config里对应的方法上了

javaconfig初始化ioc容器和注解初始化ioc容器的代码不冲突,代码可以一起使用不冲突:config文件上面加上@componentScan注解

使用注解的类:service里加上get好set方法config里:方法参数里加上依赖的对象,调用set方法注入对象
Java Config对象依赖注入相比于XML方式实际使用开发的体验较好,通过使用java代码配合注解完成注入,写错之后idea直接报错,弊端也是修改代码之后需要重新编译。

Spring Test测试模块:

Spring Test是Spring中用于测试的模块

Spring Test对JUnit单元测试框架有良好的整合

通过Spring Test可在JUnit在单元测试时自动初始化IoC容器

Spring与JUnit4整合过程:

Maven工程依赖spring-test

利用@RunWith与@ContextConfiguration描述测试用例类

测试用例类从容器获取对象完成测试用例的执行

<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.6.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.2.6.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
  </dependency>
</dependencies>
//将Junit4的执行权交给Spring Test,在测试用例执行前自动初始化Ioc容器
@RunWith(SpringJunit4ClassRunner.class)
@ContextConfiguration(location={"classpath:applicationContext.xml"})
public class SpringTestor{
    private UserService userService;

    @Test
    public void testUserService(){
        userService.createUser();
    }
}

测试用例执行前,ioc容器初始化过程中配置文件中的类就已经准备好了,测试用例类直接使用@Resource注入要使用的对象,然后在测试用例方法上添加@Test并在方法里直接调用该对象的方法完成测试即可。

学习收获

学习了使用java Config配置Spring Ioc和如何使用Spring 单元测试,整合Spring和Junit

打卡截图

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP