春天顶部

通过参考,使用Spring 5和Spring Boot 2开始学习春天课程:

>>学习春天

1.概述

Spring 5在应用程序上下文中提供了对功能豆类注册的支持。

简单的说,这可以通过重载的新版本完成注册表()方法在界定中定义GenericApplicationContext.班级。

让我们看看有关此功能的一些示例。

2。Maven.依赖性

设置一个最快的方法春天5.项目是使用春靴子通过添加春天启动 - 起动器 - 父母依赖于pom.xml:

<父>  org.springframework.boot   Spring-Boot-Starter-Parent   2.4.0  

我们也需要春天启动 - 起动器网春季启动 - 起动器 - 试验对于我们的示例,在a中使用Web应用程序上下文junit.测试:

<依赖>  org.springframework.boot   Spring-Boot-Starter-Web   <依赖项>  org.springFrameWork.Boot  春天启动 - 起动器 - 测试 <范围>测试 

当然,春靴子不需要使用新的功能方法注册bean。我们也可以添加春天核心直接依赖性:

<依赖项>  org.springframework   Spring-Core   5.3.3  

3.功能豆类注册

注册表()API可以接收两种类型的功能界面作为参数

  • 一种供应商争论用于创建对象
  • 一种BeanDefinitionCustomizer vararg.可用于提供一个或多个Lambda表达式以定制豆类;此界面有一个单一的定制()方法

首先,让我们创建一个非常简单的类定义,我们将用于创建beans:

公共类myservice {public int getrandomnumber(){return nuthandult()。Nextint(10);}}

再加上a@springbootapplication我们可以用来运行的课程junit.测试:

@springBootApplication公共类Spring5Application {公共静态void main(String [] args){springapplication.run(spring5application.class,args);}}

接下来,我们可以使用它的测试类使用@springboottest.注释创建一个genericwebapplicationscontext.实例:

@runwith(springrunner.class)@springboottest(classes = spring5application.class)public类beanRegistrationIntegrationTest {@autowired私有普通威胁;// ......}

我们正在使用genericwebapplicationscontext.输入我们的示例中,但可以以相同的方式使用任何类型的应用程序上下文来注册bean。

让我们看看如何我们可以使用Lambda表达式注册一个bean来创建实例

context.registerBean(MyService.class, () -> new MyService());

让我们验证我们现在可以检索bean并使用它:

myservice myservice =(myservice)context.getBean(“com.ba金宝搏188体育eldung.functional.myservice”);asserttrue(myservice.getrandomnumber()<10);

在此示例中,我们可以在此示例中看到,如果未明确定义Bean名称,则将从类的小写名称确定。上面的方法也可以与显式bean名称一起使用:

context.registerBean(“mysecondservice”,myservice.class,() - > new myservice());

接下来,让我们看看如何我们可以通过添加lambda表达式来定制a bean来定制它

context.registerbean(“mycallbackservice”,myservice.class,() - > new myservice(),bd  - > bd.setautowirecandidate(false));

此参数是一个回调,我们可以用来设置bean属性,例如自动候选人旗帜或者基本的旗帜。

4。结论

在此快速教程中,我们已经看到了我们如何使用注册bean的功能方式。

可以找到示例的源代码在GitHub

春天底

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>课程
对这篇文章的评论关闭!