java Spring5 函数式+Lambda表达式用 new创建对象并交给Spring进行管理

首先 我们知道 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来取到它

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值