java Spring5 函数式+Lambda表达式用 new创建对象并交给Spring进行管理
创始人
2025-05-30 13:07:52

首先 我们知道 Spring5 是支持java8的 那么 java8中包含的Lambda表达式 他自然也是支持的
简单说 Spring5 核心容器中支持函数式 Lambda表达式做法

这里先科普一下 之前我们接触过Spring5 方式创建对象的两种方法 分别是xml和注解,还有就是原来的new其实也可以实现,但你直接new Spring其实是不知道你这个对象被创建的 因为这是java帮你实现的 Spring 压根不知道有这么回事

但其实 new对象 也有一种方式可以在Spring中注册 我们创建一个java项目 然后引入Spring的基本依赖
然后在src下创建测试类 参考代码如下

import org.springframework.context.support.GenericApplicationContext;public class text {public static void main(String[] args) {//创建一个GenericApplicationContext对象GenericApplicationContext context = new GenericApplicationContext();//将GenericApplicationContext对象清空context.refresh();//注册对象context.registerBean(text.class,()-> new text());}
}

这里 我们创建了一个GenericApplicationContext对象 然后先调用refresh清空一下 然后在通过他的registerBean方法创建对象
这里 我们用了个Lambda表达式的语法 简单说 就是将text类的对象 在Spring中创建了

然后 得到这个对象 相对也会有所不同 注解和xml生成的bean 名字要么定义式就已经声明了 要不就是类的首字母变为小写get bean对应名就可以找到
但这个是不能这样的

首先一种方式是用它在src下的全路径来找

例如 在src下的aop目录下的uisr包下的user
那么就是

user user = (user) context.getBean("aop.uisr.user");
System.out.println(user);

但因为我们的text就在src目录下 所以直接

text TS = (text) context.getBean("text");
System.out.println(TS);

就可以了
运行结果如下
在这里插入图片描述
系统简单输出了一下对象地址

第二种方式 则是在声明式直接指定他的名称
修改测试类代码如下

import org.springframework.context.support.GenericApplicationContext;public class text {public static void main(String[] args) {//创建一个GenericApplicationContext对象GenericApplicationContext context = new GenericApplicationContext();//将GenericApplicationContext对象清空context.refresh();//注册对象context.registerBean("TypeStex",text.class,()-> new text());text TS = (text) context.getBean("TypeStex");System.out.println(TS);}
}

这里 改动的主要就是registerBean函数 它的第一个参数就是指定bean对象名称,只是可以不传 我们传了 TypeStex 那么就可以通过TypeStex来取到它

运行结果如下
在这里插入图片描述

相关内容

热门资讯

今年我省粮食产量达515.56... (来源:辽宁日报)转自:辽宁日报 图为在中储粮(盘锦)储运有限公司,装运粮食的重型卡车排起长队...
国家发展改革委部署促进投资止跌... (来源:辽宁日报)转自:辽宁日报 新华社北京12月13日电 (记者魏玉坤) 记者13日从全国发展和改...
江苏省实施《中华人民共和国森林... (来源:新华日报) 目 录 第一章 总则 第二章 森林、林木和林地权属管理...
姜堰数字化产品讲“活”理论 (来源:新华日报) □ 本报记者 卢佳乐 通讯员 姜宣 “王教授,您约我‘喝茶论道’,...
联合国维和部队在苏丹遇袭 6人... 转自:财联社【联合国维和部队在苏丹遇袭 6人死亡】财联社12月14日电,当地时间13日,苏丹武装部队...