Spring【@Resource、@Autowired+lombook+Bean的生命周期】

@Resource 和 @Autowired 的区别

在Spring中找Bean的两种方式:①先根据类型查找②再根据名称查找

@Autowired先根据类型查找,再根据名称查找【根据上述查找结果不唯一,再添加一个

@Qualifier(value=“”),就可以查找】

@Resource先根据名称查找,再根据类型查找【可以添加name=“”,就按照这个name查找】

 lombok 插件的作用:减少冗余的Set,Get代码,重写ToString

①添加依赖②增加@Setter和@Getter还有@ToString③idea上安装Lombok插件

Bean的作用域

默认是 单例模式 整个 Spring 中只有一份

1.singleton 单例模式【默认情况下】   ---->处于性能的考虑 只在Spring中存在一份

2.prototype 原型模式  ---->在存Bean的时候加入

@Scope("prototype")  @Scope("ConfigurableBeanFactory.SCOPE_PROTOTYPE")

@Component
public class UserBeans {@Bean@Scope("prototype")public User user1(){User user = new User();user.setId(18);user.setName("zhangsan");return user;}
}
@Controller
public class UserController {@Autowiredprivate User user;public void sayHi(){System.out.println("UserController->"+user);}
}

在默认的单例模式下,Bean只在内存保存一份,在任意时间地方修改则都将被终生修改。

在原型模式下,则每一次@Autowired注入都将会重新开辟一块内存注入一个Bean的一份拷贝。 

原型模式的书写要在存Bean时添加如下注解

①@Scope("prototype")②@Scope("ConfigurableBeanFactory.SCOPE_PROTOTYPE")

Bean的生命周期【泛】

 Bean的生命周期【细】

1.开辟内存空间(实例化)

2.设置属性(注入属性)

3.初始化

        3.1各种通知 BeanNameAware、BeanFactoryAware、ApplicationContextAware的接口方法

        3.2初始化前置方法 BeanPostProcessor 初始化前置方法

        3.3初始化方法两种实现方法xml 方式注解方式@PostConstruct

        3.4自定义方法

        3.5初始化后置方法BeanPostProcessor

4.使用 Bean

5.销毁 Bean 对象

@Component
public class BeanCompont implements BeanNameAware {@Overridepublic void setBeanName(String s) {System.out.println("BeanNameAware->执行了通知");}public void myInit(){ //自定义类System.out.println("BeanCompont->myInit");}@PostConstructpublic void  doPostConstruct(){System.out.println("BeanCompont->PostConstruct注解初始化");}public void sayHi(){System.out.println("BeanCompont->sayHi()");}@PreDestroypublic void doPreDestory(){System.out.println("BeanCompont->PreDestroy销毁");}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:content="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><content:component-scan base-package="com.test.demo"></content:component-scan><bean id="beanCompont" class="com.test.demo.component.BeanCompont" init-method="myInit"></bean>
</beans>
public class application {public static void main(String[] args) {
//        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
//
//        UserController userController = context.getBean(UserController.class);
//        userController.sayHi();ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml");BeanCompont compont = context.getBean("beanCompont",BeanCompont.class);compont.sayHi();context.destroy();}
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity中绑定动画的行为系统

主要代码逻辑是创建一个action队列,当动画播放结束时就移除队头,执行后面的事件 public class Enemy : MonoBehaviour {public event Action E_AnimatorFin;//当动画播放完毕时public Action DefaultAction;//默认事件public Dictionary<Action, string> EventAnimator n…

AndroidStudio添加一个虚拟设备

虚拟设备管理器 这个是AndroidStudio的启动界面 虚拟设备管理界面 点击加号&#xff0c;新增 选择手机型号 选择系统版本 虚拟设备名 完成

PHP 伪协议:使用 php://filter 为数据流应用过滤器

文章目录 参考环境PHP 伪协议概念为什么需要 PHP 伪协议&#xff1f; php://filter概念格式 基本使用普通读写file_get_contents 与 file_put_contentsinclude 过滤器的基本使用base64 的编码与解码rot13 加解密rot13 算法string.rot13 过滤器列表多个过滤器的使用注意事项 处理…

手摸手系列之批量修改MySQL数据库所有表中某些字段的类型

在迁移老项目的数据库时&#xff0c;使用Navicat Premium的数据传输功能同步了表结构和数据。但是&#xff0c;发现某些字段的数据类型出现了错误&#xff0c;例如&#xff0c;租户ID从Oracle的NUMBER类型变成了MySQL的decimal(10)&#xff0c;正确的应该是bigInt(20)。此外&am…

voc数据集格式与yolo数据集格式的区别及相互转化

Pascal VOC数据集是目标检测领域最常用的标准数据集之一&#xff0c;几乎所有检测方向的论文都会给出其在VOC数据集上训练并评测的效果。VOC数据集包含的信息非常全&#xff0c;它不仅被拿来做目标检测&#xff0c;也可以拿来做分割等任务&#xff0c;因此除了目标检测所需的文…

kafka与zookeeper的集群

基础配置 systemctl stop firewalld && systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/configvi /etc/hosts ip1 node1 ip2 node2 ip3 node3zookeeper介绍 zookeeper是一个分布式的协调服务&#xff0c;主要用…

【window10】Dart+Android Studio+Flutter安装及运行

安装Dart SDK安装Android Studio安装Flutter在Android Studio中创建并运行Flutter项目 安装前&#xff0c;请配置好你的jdk环境&#xff0c;准备好你的梯子~ 安装Dart SDK 浅浅了解一下Dart&#xff1a; Dart 诞生于2011年&#xff0c;是由谷歌开发的一种强类型、跨平台的客户…

【计算机视觉 05】YOLO论文讲解:V1-V7

https://ai.deepshare.net/live_pc/l_63243a65e4b050af23b79338 Part1.目标检测与YOLO系列 1. 目标检测任务及发展脉络 2. YOLO的发展史 Anchors Base原理&#xff1a; Part2.YOLOV1-V3 3. YOLO V1的网络结构 4. YOLO V3的网络结构与实验结果 Part3.YOLO的进化 5. YOLO V4的网络…

每个前端都要学的【前端自动化部署】,Devops,CI/CD

原文发布于&#xff1a;2023-09-21 11:50 作者&#xff1a;65岁退休Coder 原文链接&#xff1a;https://juejin.cn/post/7102360505313918983 DevOps 当我们提到 Jenkins&#xff0c;大家首先想到的概念就是 CI/CD&#xff0c;在这之前我们应该再了解一个概念。 DevOps&#…

轻松实现时间录入自由!如何在Microsoft Word中轻松插入格式化的日期和时间

在文档中插入当前日期和时间有几个原因。你可能希望将其插入信函或页眉或页脚中。无论是什么原因&#xff0c;Word都可以轻松地将日期和时间插入文档。 如果希望在打开或打印文档时自动更新日期和时间&#xff0c;可以将其作为自动更新的字段插入。该字段也可以随时手动更新。…

六个交易日市值蒸发20亿港元,第四范式难逃AI大模型“魔咒”

AI独角兽第四范式终于敲钟了。 北京第四范式智能技术股份有限公司(06682.HK&#xff0c;下称“第四范式”)于9月28日正式挂牌港交所&#xff0c;发行价为55.60港元/股&#xff0c;IPO首日报收58.50港元/股。 上市后6个交易日&#xff0c;截至10月6日港股收盘&#xff0c;第四…

一文读懂Base64

这几天在和第三方交互的时候&#xff0c;对方返回的数据是base64格式的数据&#xff0c;所以这两天又彻底捋了下Base64的来龙去脉。之前看过一篇文章说的非常好&#xff08;再找到给加上链接&#xff09;&#xff0c;我在这不详细说明了&#xff0c;只说转换过程。 还是使用中…