当前位置: 首页 > article >正文

Spring @Bean注解使用场景二

bean:最近在写一篇让Successfactors顾问都能搞明白的sso的逻辑的文章,所以一致在研究IAS的saml2.0的协议,希望用代码去解释SP、idp的一些概念,让顾问了解SSO与saml的关系,在github找代码的时候发现一些代码的调用关系很难理解,今天上课的时候正好需要说到一个知识点,所以希望通过这篇文章去介绍@Bean这个注解的含义。

一 bean的含义

Spring定义Bean的两种方式:<bean>和@Bean,这两种都是去实例化对象的

我们先看XML的bean

图片

然后看@bean注解

图片

通过上面两个图,我们可以看出,这两个是一个意思,只是不同的实现方式而已。

二 分析smal2.0代码

图片

在看github的有一个人写的代码的时候,发现JKSKeyManager keyManager没有实例化就被引用,因为一致以为@bean注解,类就会交给容器管理,如果需要注入就需要用注解@autowire才可以,所以一致没看明白,正好今天上课的时候说注入外部bean的时候,让恍然大户,其实这就是一个典型的通过@Bean注解注入的例子,

SamlMessageHandler samlMessageHandler实例化的时候,容器会检查
JKSKeyManager keyManage是否被容器接管,如果结果就会自动注入。所以使用JKSKeyManager keyManage的时候不需要@autowire。

三 简单例子验证

现在我们就用UserDao与UserService两个类来演示,首先我们来看UserDao这个类,这类就是一个简单的空架子,我在类上面也没有用注解@Repository。

图片

然后我们在看UserService这个类,这个类也没有加上@Service注解,所以如果没有new,按道理是不会实例化。

图片

现在我配置Config的配置类,这个类上面我有一个注解@Configuration,目的就是用全注解开发,在这个类里面我定义两个bean,注意我们看第二个bean的方法参数里面是UserDao的类,但是我们没有在UserDao类上面使用任何注解,这个时候就会有个疑问,为什么17行不会是空指针。原因很简单,就是在下下图的getbean实例化UserService的时候,系统发现UserDo没有实力,系统就回去找第9行的@Bean代码.就是我们bean注入外部bean的概念。

图片

图片


http://www.kler.cn/a/586524.html

相关文章:

  • 【PHP】获取PHP-FPM的状态信息
  • Python JSON模块详解:从入门到高级应用
  • C#—线程池详解
  • 健康养生:拥抱活力,畅享生活
  • Excel单元格中插入自定义超链接
  • 第5课 树莓派的Python IDE—Thonny
  • Python系列教程241——不要使用from *
  • Navicat for Snowflake 震撼首发,激活数据仓库管理全新动能
  • MS-DOS 6.22 下建立 FTP 服务器
  • 机器学习-----决策树
  • 市场波动中的风险管理与策略优化
  • 具备多种功能的PDF文件处理工具
  • react useEffect函数清除副作用函数执行时机
  • 第三篇《RMAN 备份与恢复指南:保障数据库安全》(RMAN)
  • JAVA字符串与正则表达式
  • 策略模式(Strategy Pattern)与状态模式(State Pattern)的异同
  • ROS2基础——Linux
  • LeetCode热题100——技巧
  • 05 | 使用 Cobra 包来构建你的 Go 项目
  • pytorch训练权重转化为tensorflow模型的教训