Spring5新功能@Nullable注解及函数式注册对象

目录
  • Spring5新功能
    • 一、@Nullable 注解
      • 1. 用在方法上
      • 2. 用在参数上
      • 3. 用在属性上
    • 二、支持函数式风格

Spring5新功能

一、@Nullable 注解

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

我们可以在源码里找到很多示例。

1. 用在方法上

方法的返回值可以为空。

2. 用在参数上

参数可以为空。

3. 用在属性上

属性值可以为空。

二、支持函数式风格

比如这里有一个类:

public class User {
    public static void main(String[] args) {
        User user = new User();
    }
}

在 main 方法里手动创建了一个对象,但是这个并没有交给 spring 管理,因为没有注册。

spring5 里支持函数式风格创建对象,并交给 spring 来管理。

@Test
    public void testGeneric() {
        // 创建 GenericApplicationContext 对象
        GenericApplicationContext context = new GenericApplicationContext();

        // 调用 context 对象的方法进行注册,用 Lambda 表达式
        context.refresh();
        context.registerBean("user1", User.class, () -> new User());

        // 获取在 spring 中创建的对象
        User user = (User) context.getBean("user1");
        System.out.println(user);
    }

运行测试:

com.pingguo.spring5.test.User@76707e36

Process finished with exit code 0

以上就是Spring5新功能详解@Nullable注解及函数式注册对象的详细内容,更多关于Spring5 @Nullable注解的资料请关注我们其它相关文章!

(0)

相关推荐

  • Java Spring5学习之JdbcTemplate详解

    一.JdbcTemplate Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作 二.实战 2.1 引入依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.24</version> </dependency> <!-

  • idea2020导入spring5.1的源码的详细教程

    1.先来说下导入环境和工具:     java版本:1.8     idea: idea2020     gradle:gradle5.3 2.gradle的安装     idea导入spring的源码时,每次构建的时候都会去下载gradle,所以如果我们能提前下好gradle可以提高构建速度.     gradle下载地址:https://services.gradle.org/distributions/     上面放的地址可以找到gradle的所有版本.(注意:构建spring源码是有版

  • Spring5学习之基础知识总结

    1.概述 1.Spring 是轻量级的开源的 JavaEE 框架 2. Spring 可以解决企业应用开发的复杂性 3.Spring 有两个核心部分:IOC 和 Aop IOC:控制反转,把创建对象过程交给 Spring 进行管理Aop:面向切面,不修改源代码进行功能增强 4.Spring 特点 方便解耦,简化开发Aop 编程支持方便程序测试方便和其他框架进行整合方便进行事务操作降低 API 开发难度 2.入门Demo 1.jar包引入 <project xmlns="http://mav

  • Java基础之spring5新功能学习

    一.前言 1.整个 Spring5 框架的代码基于 Java8 ,运行时兼容 JDK9,许多不建议使用的类和方 法在代码库中删除 2.Spring 5框架自带了通用的日志封装 Spring5 已经移除 Log4jConfigListener,官方建议使用 Log4j2 二.日志配置 jar包 <!-- 日志 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <

  • Spring5新特性之Reactive响应式编程

    目录 1什么是响应式编程 2回顾Reactor 2.1什么是Reactor 2.2为什么是Reactor 2.3Reactor模式的经典实现—Netty 3Spring5中多Reactive的支持 3.1SpringWebflux 3.1.1依赖 3.1.2Controller代码 3.1.3测试 3.1.4SpringMVC和SpringWebFlux模式上的不同 3.2SpringDataReactiveRespositories 3.2.1依赖 3.2.2配置 3.3.3测试 4如何理解R

  • spring5新特性全面介绍

    前方:对于很多开发人员来说,目前大都还在使用spring4的时候,而spring5早已经发布.虽然你可能暂时还没有使用到spring5,但还是需要对其有个大概的了解. Spring 5 于 2017 年 9 月发布了通用版本 (GA),它标志着自 2013 年 12 月以来第一个主要 Spring Framework 版本.它提供了一些人们期待已久的改进,还采用了一种全新的编程范例,以反应式宣言中陈述的反应式原则为基础. 这个版本是很长时间以来最令人兴奋的 Spring Framework 版本

  • Spring5新功能@Nullable注解及函数式注册对象

    目录 Spring5新功能 一.@Nullable 注解 1. 用在方法上 2. 用在参数上 3. 用在属性上 二.支持函数式风格 Spring5新功能 一.@Nullable 注解 @Nullable 注解可以使用在方法.属性.参数上,分别表示方法返回可以为空.属性值可以为空.参数值可以为空. 我们可以在源码里找到很多示例. 1. 用在方法上 方法的返回值可以为空. 2. 用在参数上 参数可以为空. 3. 用在属性上 属性值可以为空. 二.支持函数式风格 比如这里有一个类: public cl

  • Spring5新功能日志框架Log4j2整合示例

    目录 Spring5整合Log4j2日志框架 一.引入依赖 二.创建Log4j2 配置文件 三.手动进行单独的输出 Spring5整合Log4j2日志框架 本次系列的学习是基于 spring5 ,也就是最新的版本. spring5 的整个代码都是基于 java8 的,自身作了不少的优化,比如许多不建议使用的类和方法已经在代码库中删除. 此外,spring5 框架自带了通用的日志封装,但是我们依然可以整合其他的日志框架使用,比如 Log4j.不过在 spring5 中移除了 Log4jConfig

  • Spring五大类注解读取存储Bean对象的方法

    目录 前情提要 配置spring-config文件 类注解和方法注解 @Controller(控制器存储) @Service(服务存储) @Configuration(配置存储) @Repository(仓库存储) @Component(组件存储) 5大类注解联系 Spring给Bean命名规则 方法注解@Bean 重命名Bean 获取Bean对象(对象装配) 属性注入 构造方法注入 Setter注入 三种注入方式对比 注入同一类型多个Bean对象 前情提要 我们上节内容学习了如何创建\注册\读

  • Spring 4.0新功能:@Conditional注解详细介绍

    前言 最近在学习spring,抽空会将学习的知识总结下面,本文我们会接触spring 4的新功能:@Conditional注解.在之前的spring版本中,你处理conditions只有以下两个方法: 在3.1版本之前,你需要使用spring expression language 在3.1版本发布时,profiles被引入来处理conditions. 让我们分别看看以上两者,在来理解spring 4带来的@Conditional注解. Spring Expression Language(SP

  • PHP7.1新功能之Nullable Type用法分析

    本文实例分析了PHP7.1新功能之Nullable Type用法.分享给大家供大家参考,具体如下: 在 PHP5 时代,PHP 的参数已经支持 type hint(除了基本类型),想必大家应该很熟悉:后来 PHP7 时代来临,PHP 也可以指定返回值的类型(以及基本类型的 type hint).但我们可能还有一种需求:除了指定的 type hint,参数或者返回值也能定义可以为 null,举个例子,假如我们有一个 UserRepository 类,有一个方法叫 find($id),此方法可返回一

  • 浅析Java8新特性Lambda表达式和函数式接口

    什么是Lambda表达式,java8为什么使用Lambda表达式? "Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数.我们可以把 Lambda表达式理解为是 一段可以传递的代码.最直观的是使用Lambda表达式之后不用再写大量的匿名内部类,简化代码,提高了代码的可读性. // 启动一个线程,不使用Lambda

  • 学习SpringBoot容器功能及注解原理

    目录 1.组件添加 1.1@Configuration 1.2@Import 1.3@Conditional 2.原生配置文件引入 2.1@ImportResource 3.配置绑定 3.1@ConfigurationProperties 3.2@EnableConfigurationProperties + @ConfigurationProperties 1.组件添加 1.1@Configuration @Configuration:告诉SpringBoot这是一个配置类 配置类里面使用@B

随机推荐