Spring中Bean的理解以及@Bean的作用
Bean在Spring和SpringMVC中无所不在,将这个概念内化很重要,下面分享一下我的想法:
一、Bean是啥
1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);
2、凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;
3、规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解;
4、把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了
5、我们都在微博上@过某某,对方会优先看到这条信息,并给你反馈,那么在Spring中,你标识一个@符号,那么Spring就会来看看,并且从这里拿到一个Bean或者给出一个Bean
二、注解分为两类:
1、一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;
2、一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装。
三、@Bean是啥?
1、原理是什么?先看下源码中的部分内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
意思是@Bean明确地指示了一种方法,什么方法呢——产生一个bean的方法,并且交给Spring容器管理;从这我们就明白了为啥@Bean是放在方法的注释上了,因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,剩下的你就别管了
2、记住,@Bean就放在方法上,就是产生一个Bean,那你是不是又糊涂了,因为已经在你定义的类上加了@Configration等注册Bean的注解了,为啥还要用@Bean呢?这个我也不知道,下面我给个例子,一起探讨一下吧:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
从上面的例子也印证了我上面的总结的内容:
1、凡是子类及带属性、方法的类都注册Bean到Spring中,交给它管理;
2、@Bean 用在方法上,告诉Spring容器,你可以从下面这个方法中拿到一个Bean
Spring中Bean的理解以及@Bean的作用相关推荐
- Spring中ref local与ref bean区别
为什么80%的码农都做不了架构师?>>> Spring中ref local与ref bean区别 今天在做SSH框架Demo实例时,在ApplicationResources. ...
- Spring中IOC的理解(通俗易懂版)
文章目录 1.IOC提出背景 2:IOC的核心概念 3:IOC的实现方式 4:IOC的入门案例 (1):思路分析 (2):代码解析 5:DI入门案例 (1):思路分析 (2):代码解析 6:DI依赖注 ...
- Spring中,修改注入的bean名称
2019独角兽企业重金招聘Python工程师标准>>> 案例: 1).源码 UserService.java public interface UserService {} User ...
- Spring中的IOC理解
相关概念 Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系. Spring 的 IoC 容器 ...
- 对spring 中IOC 的理解
IOC 即"控制反转" 不是技术, 是一种思想.使用ioc 意味着将你设计好的对象交给容器来管理,而不是传统的在你的对象内部直接进行管理.而spring通过我们在xml 中的配置和 ...
- Spring中WebApplicationInitializer的理解
现在JavaConfig配置方式在逐步取代xml配置方式.而WebApplicationInitializer可以看做是Web.xml的替代,它是一个接口.通过实现WebApplicationInit ...
- java spring源码_spring源码分析-spring中的bean
接触过spring的人都知道,在spring中我们称java对象为bean,我们在spring的debug日志或者报错日志也能看到各种bean的描述.其实,spring的bean和java的对象之间是 ...
- Spring源码分析-如何获取Bean对象
导语 在上篇博客中 介绍了关于BeanFactory和FactoryBean相关的操作,并且查看了在两个操作中他们具体的代码有那些,这篇博客主要就是顺着上篇博客思路继续来分析Bean对象的获取.下 ...
- Spring - BeanDefinitionRegistryPostProcessor 扩展接口 动态注册bean
文章目录 Pre org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor 接口的继承关系 BeanD ...
最新文章
- PHP exec xargs 不执行,关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别(新版)...
- c++STL中的find()函数 有两种使用方法
- 用VBA去除Excel工作表保护密码
- 苹果cms V10模板 秘趣响应式高端在线影视视频模板
- nginx 在ubuntu 上的启动,停止,重启
- 西瓜书+实战+吴恩达机器学习(十八)降维(主成分分析 PCA)
- 逻辑回归详解及Python实现
- Atitit java webservice客户端v2 目录 1.1. 生成stub代码wsimport.exe	1 1.2. Wsimport	2 1.3. clienttest	3 1.1
- ajax异步下载文件并判断状态
- oracle sqlldr命令6,oracle sqlldr命令
- mac下bin格式文件解压
- ubuntu和kubuntu换源
- 自然辩证法对计算机科学技术的应用,自然辩证法与计算机科学技术
- Intel编译器安装WRF-CMAQ
- C++中如何获取一个文件夹下带有指定文件后缀名的文件绝对路径
- 拜托,面试别再问我 TCC 分布式事务的原理了…
- c# winform 解决PictureBox 无法打印全部图片的问题
- WuThreat身份安全云-TVD每日漏洞情报-2023-01-31
- 死亡搁浅 服务器不稳定,[收集]死亡搁浅现有bug临时解决方案
- 两名老人接力营救轻生女子一人溺亡