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的概念。

相关推荐
月亮不月亮13 分钟前
月亮商场购物打折Java
java·eclipse
moxiaoran575315 分钟前
Springboot+MongoDB简单使用示例
spring boot·mongodb·spring
guozhetao22 分钟前
【ST表、倍增】P7167 [eJOI 2020] Fountain (Day1)
java·c++·python·算法·leetcode·深度优先·图论
技术思考者23 分钟前
基础很薄弱如何规划考研
java·经验分享·考研
●VON1 小时前
重生之我在暑假学习微服务第二天《MybatisPlus-下篇》
java·学习·微服务·架构·mybatis-plus
老华带你飞1 小时前
口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·论文·毕设·口腔小程序
小鱼人爱编程1 小时前
Java基石--反射让你直捣黄龙
前端·spring boot·后端
hqxstudying1 小时前
J2EE模式---服务层模式
java·数据库·后端·spring·oracle·java-ee
GM_8281 小时前
【最新最完整】SpringAI-1.0.0开发MCP Server,搭建MCP Client 实战笔记(进阶+详细+完整代码)
java·后端·ai编程·springai·mcp
都叫我大帅哥1 小时前
Java DelayQueue:时间管理大师的终极武器
java