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

简介: 这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与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、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();
    }
}

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();

    }
}

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();

    }
}

4、后语

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

学无止境。。。。。。

相关文章
|
3天前
|
Java 数据库连接 Spring
【2021Spring编程实战笔记】Spring开发分享~(下)
【2021Spring编程实战笔记】Spring开发分享~(下)
10 1
|
3天前
|
XML Java 数据库连接
【2020Spring编程实战笔记】Spring开发分享~(上)
【2020Spring编程实战笔记】Spring开发分享~
23 0
|
2月前
|
JSON Java API
解码Spring Boot与JSON的完美融合:提升你的Web开发效率,实战技巧大公开!
【8月更文挑战第29天】Spring Boot作为Java开发的轻量级框架,通过`jackson`库提供了强大的JSON处理功能,简化了Web服务和数据交互的实现。本文通过代码示例介绍如何在Spring Boot中进行JSON序列化和反序列化操作,并展示了处理复杂JSON数据及创建RESTful API的方法,帮助开发者提高效率和应用性能。
85 0
|
2月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
75 0
|
11月前
|
Java Spring
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
100 0
|
11月前
|
缓存 监控 Java
Spring框架之AOP(面向切面编程)
Spring框架之AOP(面向切面编程)
51 0
|
3月前
|
分布式计算 Java MaxCompute
详解 Java 限流接口实现问题之在Spring框架中使用AOP来实现基于注解的限流问题如何解决
详解 Java 限流接口实现问题之在Spring框架中使用AOP来实现基于注解的限流问题如何解决
|
4月前
|
设计模式 SQL Java
Spring框架第四章(AOP概念及相关术语)
Spring框架第四章(AOP概念及相关术语)
|
5月前
|
安全 Java 开发者
在Spring框架中,IoC和AOP是如何实现的?
【4月更文挑战第30天】在Spring框架中,IoC和AOP是如何实现的?
63 0
|
XML 设计模式 安全
【Spring框架四】——Spring AOP 注解实现和xml方式实现1
【Spring框架四】——Spring AOP 注解实现和xml方式实现
127 0