• Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架


    1、Spring5 框架核心容器支持@Nullable 注解

    @Nullable 注解可以使用在方法上面,属性上面,参数上面,表示方法返回可以为空,属性值可以为空,参数值可以为空

    1、注解用在方法上面,方法返回值可以为空
    在这里插入图片描述

    2、注解使用在方法参数里面,方法参数可以为空

    在这里插入图片描述
    3、注解使用在属性上面,属性值可以为空
    在这里插入图片描述

    2、Spring5 核心容器支持函数式风格 GenericApplicationContext

    函数式风格创建对象,交给 spring 进行管理。创建对象的时候可以通过自定义名称、也可以直接根据类的全路径

    //第一种方式创建对象
        @Test
        public void testGenericApplicationContext(){
    //        1、创建GenericApplicationContext对象
            GenericApplicationContext context = new GenericApplicationContext();
    //        2、调用context的方法对象注册
            context.refresh();
            context.registerBean("myDog", Dog.class,()-> new Dog());
    //        3、获取在spring注册的对象
            Dog myDog = (Dog)context.getBean("myDog");
            System.out.println(myDog);
    
    
    //第二种方式创建对象
            /*
            context.registerBean( Dog.class,()-> new Dog());
            Dog myDog = (Dog)context.getBean("com.zyz.spring5.entity.Dog");
            System.out.println(myDog);
            */
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    1、自定义名称

    在这里插入图片描述
    2、根据类路径
    在这里插入图片描述

    3、Spring5 支持整合 JUnit5

    3.1 整合 JUnit4

    1、 引入 Spring 相关针对测试依赖
    在这里插入图片描述
    在这里插入图片描述
    2、创建测试类,使用注解方式完成

    /**
     * @author Lenovo
     * @version 1.0
     * @data 2022/10/29 13:14
     */
    @RunWith(SpringJUnit4ClassRunner.class)//单元测试框架
    @ContextConfiguration("classpath:bean.xml")//加载配置文件
    
    public class JTest4 {
    
        @Autowired
        private UserService userService;
    
        @Test
        public void testDemo1(){
            userService.accountMoney();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3.2 整合 JUnit5

    1、引入 JUnit5 的 jar 包
    在这里插入图片描述
    在这里插入图片描述
    2、 创建测试类,使用注解完成

    /**
     * @author Lenovo
     * @version 1.0
     * @data 2022/10/29 15:27
     */
    @ExtendWith(SpringExtension.class)
    @ContextConfiguration("classpath:bean.xml")
    public class JTest5 {
    
        @Autowired
        private UserService userService;
    
        @Test
        public void test(){
            userService.accountMoney();
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3、使用一个复合注解替代上面两个注解完成整合

    /**
     * @author Lenovo
     * @version 1.0
     * @data 2022/10/29 15:27
     */
    @SpringJUnitConfig(locations = "classpath:bean.xml")
    public class JTest5 {
    
        @Autowired
        private UserService userService;
    
        @Test
        public void test(){
            userService.accountMoney();
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4、后语

    如果xml文件和配置类同时存在,则会加载两次。会报错、删除配置类就好了。但是通过读取配置类进行测试、又不会出错(xml文件也存在的情况)。目前不清楚原因???????

    学无止境。。。。。。

  • 相关阅读:
    mysql之行锁和表锁篇
    【数据库应用-2】——CDA
    设计模式之创建型模式
    前端vue路由模块拆分归类【理解版】
    Learning Git Branch 题解(基础、高级、Git远程仓库)
    手撕Vuex-Vuex实现原理分析
    [附源码]计算机毕业设计校园租赁系统Springboot程序
    【leetcode】往完全二叉树添加节点
    java毕业设计Vue框架龙猫宠物交易平台源码+系统+数据库+lw文档+调试运行
    多线程-浅析线程安全
  • 原文地址:https://blog.csdn.net/weixin_43304253/article/details/127587935