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

网站建设与经营阿里云虚拟主机做淘客网站

网站建设与经营,阿里云虚拟主机做淘客网站,帮人做视频的网站,徐州网上房地产从笔者之前的博客#xff0c;我们可以看出 Spring 是⽤来读取和存储 Bean#xff0c;因此在 Spring 中 Bean 是最核⼼的操作 资源#xff0c;所以接下来我们深⼊学习⼀下 Bean 对象#xff1a;Bean作用域#xff01; 限定程序中变量的可用范围叫做作用域#xff01;或者…从笔者之前的博客我们可以看出 Spring 是⽤来读取和存储 Bean因此在 Spring 中 Bean 是最核⼼的操作 资源所以接下来我们深⼊学习⼀下 Bean 对象Bean作用域 限定程序中变量的可用范围叫做作用域或者说在源代码中定义变量的某个区域就叫做作用域 Bean的作用域是指Bean在整个Spring容器中的行为模式 比如Singleton单列模式作用域就是表示Bean在整个Spring中只有一份它是全局共享的那么当其他人修改了这个值之后那么另一个人读取到的就是被修改的值 使用Bean注入一个user对象对其起了一个名字user.setName(java)A用户使用时进行了修改操作A用户调用user之后创建了一个局部变量user1然后去改这个局部变量里的内容通过user.setName(悟空)将”java“改为”悟空“然后B用户再去使用Bean的时候去调用来看一下打印结果 创建被修改的类User类 package com.contrlooer;public class User {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString() {return User{ id id , name name \ };} }创建公共Bean将id1namejava的对象存储到Spring中 package com.contrlooer;import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component;Component public class Users {Bean public User user1(){User usernew User();user.setId(1);user.setName(java);//名称是javareturn user;} }A用户使用时进行了修改操作 package com.contrlooer;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller;Controller public class UserController {Autowiredprivate User user;public void printUser(){System.out.println(user);//java//修改UserUser myUseruser;myUser.setName(悟空);System.out.println(user- user);//悟空System.out.println(myUser- myUser);//悟空//两个变量指向了同一个对象引用} }用户B再去使用公共Bean的时候 package com.contrlooer;import org.springframework.stereotype.Controller;import javax.annotation.Resource;Controller public class UserController2 {Resourceprivate User user;public void printUser2(){System.out.println(user-- user);//预期java但是实际的结果确实悟空} }在上述的运行结果中我们预期是java但实际的结果却是悟空 此Bean在整个框架中Spring容器中只有一份【Bean作用域默认为单列模式】只有一份意味着任何地方做出的修改当再次读到的都是修改后的值 打印A用户和B用户公共Bean的值 package com.contrlooer;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {ApplicationContext contextnew ClassPathXmlApplicationContext(spring-config.xml);UserController controllercontext.getBean(userController,UserController.class);UserController2 controller2context.getBean(userControlle2r,UserController2.class);controller.printUser();controller2.printUser2();} }原因分析 操作以上问题的原因是因为Bean默认情况下是单列模式Singleten也就是所有人的使用都是同一个对象之前我们学单列模式的时候都知道使用单列模式可以很大程度上提高性能所以在Spring中Bean的作用域默认也是Singleton单列模式 Spring Bean的作用域Scope有六种 单列模式Singleton默认模式——》性能考虑 描述该作用域下的Bean在IoC容器中只存在一个实列获取Bean即通过applicationContext.getBean等方法获取及装配Bean通过Autoeired注入都是同一个对象 场景通常无状态的Bean使用该作用域无状态表示Bean对象的属性不需要更新 备注Spring中默认选择该作用域 注意普通的Spring项目中只有前两种单列模式。原型模式后面的四种状态是Spring MVC中的值 原型模式多列模式prototype 描述每次对该作用域下的Bean的请求都会创建新的实例 获取Bean通过applicationContext.getBean等方法获取及装配Bean通过Autoeired注入都是新的对象 场景通常有状态的Bean使用该实例 请求作用域request 每次HTTP请求都会创建一个Bean对象适用于Spring MVC/Spring Web 描述每次http请求都会场景新的Bean实列类似于prototype多列模式 场景一次http请求和相应的共享Bean 备注限定Spring MVC中使用 会话作用域session 每次Session会话共享一个Bean【Spring MVC】 描述在一个http Session中定义一个Bean实例 场景用户回话的共享Bean比如记录一个用户的登录信息 备注限定Spring MVC中使用 全局作用域application了解 一个http servlet  context中共享一个Bean【Spring MVC】 描述在一个http servlet Context中定义一个Bean实列 场景Web应用的上下文信息比如记录一个应用的共享信息 备注限定Spring MVC中使用 网络长连接webSocket只适用于Spring web Socket项目了解 描述在一个HTTP  WebSocket的生命周期中定义一个Bean实列 场景WebSocket的每次会话中保存了一个Map结构的头信息用来包裹客户端的消息头第一次初始化后直到WebSocket结束都是同一个Bean 备注限定Spring  WebSocket中使用 单例作用域singleton VS 全局作用域application singleton是Spring Core的作用域application是Spring Web中的作用域singleton作用于IoC容器而application作用于Servlet容器 Bean作用域设置 使用Scope标签可以用来声明Bean的作用域 Component public class Users {Bean//在存的时候设置作用域在创建的时候就决定类型了Scope(prototype)// Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)//二选一public User user1(){User usernew User();user.setId(1);user.setName(java);//名称是javareturn user;} } Bean执行流程Spring执行流程 启动Spring容器——》实例话Bean分配内存空间从无到有——》Bean注册到Spring容器中存操作——》将Bean装配到需要的类型取操作
http://wiki.neutronadmin.com/news/347268/

相关文章:

  • 建设个人博客网站制作我的世界做壁纸网站打不开
  • 杭州网站建设费用多少如何建立一个微信公众号平台
  • 如何做优酷网站赚钱网站建设心得体会
  • 企业网站怎么制作流程网站信息内容建设局通报
  • 网站策划初级方案模板wordpress为什么放弃
  • 长沙中小企业网站建设建设网站怎么提需求
  • 合同 制作 网站网上购物商城排名
  • 网站建设报价新鸿儒好看的网站页面
  • 北京网站优化流程网络推广app是违法的吗
  • 移动网站建设平台工程建设网站导航图
  • 给公司建网站 深圳wordpress链接数据库失败
  • 建设网站 如何给文件命名wordpress克隆
  • 成都好的网站设计公司唐山网站网站建设
  • 做网站单位页面设计的对称方法包括哪几种形式
  • 东营网站建设seowordpress 安装七牛
  • 企业网站信息化建设网站建设中所涉及的所有链接建设
  • 医院网站建设情况汇报网络管理培训课程
  • 网站设计价格大概是平面设计公司一般做什么
  • 视频模板在线制作网站软件专业做学校网站论文怎么选题
  • c 网站开发例子如何建立国际网站
  • 专业网站制作案例做简历模板的网站都有哪些
  • 西安手机网站开发拓什么设计网站
  • 成都市建设学校网站网络科技公司网站
  • 企业网站建设的实践意义上海网络维护找哪家好
  • 扬中招聘信息网优化营商环境心得体会个人
  • 手机网站设计报价东莞营销网站建设直播
  • 网站上社保做增员怎么做做网站要营业执照吗
  • seo黑帽排名站长工具的使用seo综合查询运营
  • 网站公司怎么做推广网页版式设计案例
  • we建站电脑网页无法打开是什么原因