Spring中Bean及@Bean的理解与new对象的区别

一直在纠结一个问题:new创建对象和用Bean创建对象有什么区别吗?为什么在spring中要使用Bean?Bean有什么作用?

一、Bean是啥

1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);

2、凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;

3、规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解

4、把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了

二、注解分为两类:

1、一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;

2、一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装。

5、我们都在微博上@过某某,对方会优先看到这条信息,并给你反馈,那么在Spring中,你标识一个@符号,那么Spring就会来看看,并且从这里拿到一个Bean或者给出一个Bean

@Bean:明确地指示了一种方法,什么方法呢——产生一个bean的方法,并且交给Spring容器管理;从这我们就明白了为啥@Bean是放在方法的注释上了,因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,剩下的你就别管了

对象:

       spring有一个Ioc容器:Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans。 一些对象创建和使用完毕之后不会被销毁,放进对象池(某种集合)以备下次使用,下次再需要这个对象,不new,直接从池里取,节省时间,也就是说我们可以随时使用和销毁。

同理Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。 

而使用new关键字创建的对象属于强引用对象,所谓强引用,就是jvm垃圾回收机制永远不会回收这类对象,这时候需要手动移除引用。如果没有移除,这个对象将一直存在,久而久之,会引起内存泄露问题。

 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。

       强引用(Strong Reference):如“Object obj = new Object()”,这类引用是Java程序中最普遍的。只要强引用还存在,垃圾收集器就永远不会回收掉被引用的对象。

      new对象是因为类的构造方法一旦被修改,new的对象就出错了,如果是用了spring,就不用理会构造方法是否被修改,而拿来用就可以。

总的来说:Bean和new但是创建对象,但是Bean所创建的对象会集中放在一个容器中方便管理

参考:Spring中Bean及@Bean的理解 - Bossen - 博客园 (cnblogs.com)icon-default.png?t=LA92https://www.cnblogs.com/bossen/p/5824067.html

           (16条消息) Spring创建Bean与new对象的区别_旷野历程-CSDN博客_bean和对象的区别icon-default.png?t=LA92https://blog.csdn.net/xhaimail/article/details/102833267以上属于个人总结的观点,如有不足请留言指正,有更多的见解欢迎来评论区解答。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1618535.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Bean到底是什么?有什么用?

Spring Bean是什么?有什么用? 一、Bean到底是什么?二.怎么使用bean?三.Bean配置四.Bean的作用域 Bean在Spring和SpringMVC中随处可见,将这个概念内化很重要,下面分享一下我的想法: 一、Bean到底是什么? …

spring bean是什么

原文链接:https://www.awaimai.com/2596.html 歪麦博客 Spring有跟多概念,其中最基本的一个就是bean,那到底spring bean是什么? Bean是Spring框架中最核心的两个概念之一(另一个是面向切面编程AOP)。 是否正确理解…

Spring Bean的作用域

在Spring中,bean作用域用于确定哪种类型的bean实例应该从Spring容器中返回给调用者。 目前Spring Bean的作用域或者说范围主要有五种。 作用域描述singleton在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,bean作用域范围的默认值…

Spring bean是什么?

Spring有跟多概念,其中最基本的一个就是bean,那到底spring bean是什么? Bean是Spring框架中最核心的两个概念之一(另一个是面向切面编程AOP)。 是否正确理解 Bean 对于掌握和高效使用 Spring 框架至关重要。 遗憾的是&#xff0…

什么是bean

什么是bean? bean是计算机自动生成的类,bean是一个由Spring IoC容器实例化、组装和管理的对象。也就是说,bean并不是程序员编辑的,而是程序运行时,由spring通过反射生成的。在程序中,我们并不使用代码去ne…

Bean介绍

1.Bean 简介 在 Spring 中,所有被IOC 容器管理的,构成应用核心骨架的对象都被成为 Bean,它是由容器来实例化、装配、管理的对象。此外,它也是你应用中众多对象的一个。Bean 以及依赖的实例化和装配等工作全部是由容器中的配置元信…

Bean专题——什么是Bean?怎么注册、使用?生命周期?作用域?

1.什么是Bean? Bean是被实例的、组装的、及被Spring容器管理的Java对象。Spring容器会自动完成Bean对象的实例化。创建应用对象之间的协作关系的行为被称为:装配,这就是依赖注入的本质。 2.Spring三种装配方案 1.隐式的bean发现机制和自动…

【Spring第三篇】什么是Bean?

在Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。 我们总结如下: 1.bean是对象,一个或者多个不限定 2.bean由Spring中一个叫IoC的东西管理 3.我们的应用程序由一个…

大数据-玩转数据-Flink窗口函数

一、Flink窗口函数 前面指定了窗口的分配器, 接着我们需要来指定如何计算, 这事由window function来负责. 一旦窗口关闭, window function 去计算处理窗口中的每个元素. window function 可以是ReduceFunction,AggregateFunction,or ProcessWindowFunction中的任意一种. Reduc…

软考:中级软件设计师:网络类型与拓扑结构,网络规划与设计,ip地址与子网划分,特殊含义的IP地址

软考:中级软件设计师:网络类型与拓扑结构 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准…

Qt入门教程【Core篇】Layout布局(布局管理器、手动布局)

😈「编程小鱼酱秘密基地」:传送门 😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「网易云课堂」:传送门 😈「CSDN学院」:传送门 😈「51CTO学…

前端布局 Flex(弹性)布局

1. flex布局优点 操作方便,布局极为简单,移动端应用很广泛 pc端浏览器支持情况较差 IE11或者更低版本,不支持或仅部分支持 2. flex布局原理 flex意为“弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器都…

Java BorderLayout(边框布局)布局管理器

BorderLayout BorderLayout 将容器分为 EAST 、 SOUTH 、 WEST 、 NORTH 、 CENTER五个区域,普通组件可以被放置在这 5 个区域的任意一个中 。 BorderLayout布局 管理器的布局示意图如图所示 。 当改变使用 BorderLayout 的容器大小时, NORTH 、 SOUTH …

java:布局方法(网格布局)

网格布局 一、简单说明二、关键代码三、流程图四、例子说明1. 有17个“按钮”排列(1)源码A(2)运行效果 2. 有36个“按钮”排列(1)源码B(2)源码B运行效果 3. 有12个“按钮”排列&…

Grid布局介绍

1、什么是Grid布局 ​     Grid布局即网格布局,是一种新的css模型,一般是将一个页面划分成几个主要的区域,定义这些区域的大小、位置和层次等关系,是目前唯一一种css二维布局。 2、和flex布局的区别 ​     Grid布局和fle…

Java GridLayout(网格布局)布局管理器

GridLayout(网格布局) ​ GridLayout 布局管理器将容器分割成纵横线分隔的网格 , 每个网格所占的区域大小相同。当向使用 GridLayout 布局管理器的容器中添加组件时, 默认从左向右、 从上向下依次添加到每个网格中 。 与 FlowLay…

css经典布局——圣杯布局

圣杯布局和双飞翼布局一直是前端面试的高频考点,圣杯布局的出现是来自由 Matthew Levine 在 2006 年写的一篇文章 《In Search of the Holy Grail》。 比起双飞翼布局,它的起源不是源于对页面的形象表达。在西方,圣杯是表达“渴求之物”的意思…

CSS响应式布局(自适应布局)

CSS 响应式布局也称自适应布局,是 Ethan Marcotte 在 2010 年 5 月份提出的一个概念,简单来讲就是一个网站能够兼容多个不同的终端(设备),而不是为每个终端做一个特定的版本。这个概念是为解决移动端浏览网页而诞生的。…

flex布局(详解)

目录 前言 一、何为Flex布局 二、基本概念 三、容器的属性 3.1 flex-direction属性 3.2 flex-wrap属性 3.3 flex-flow 3.4 justify-content属性 3.5 align-items属性 3.6 align-content属性 四、项目的属性 4.1 order属性 4.2 flex-grow属性 4.3 flex-shrink属性 …

Redis各类数据结构应用场景总结

Redis各类数据结构应用场景总结 引言String应用场景 List应用场景 Hash应用场景 Set应用场景 ZSet应用场景 小结 引言 实际面试过程中更多看重的是对Redis相关数据结构的活学活用,同时也可能会引申出Redis相关底层数据结构原理的实现,笔者最近面试过程中…