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

建立网站导航栏的方法seo外包优化公司

建立网站导航栏的方法,seo外包优化公司,2017网站设计趋势,同一素材 不同的布局网站设计目录 一、什么是Bean的作用域 二、Scope注解 三、Bean的6种作用域 3.1 singleton单例模式 3.2 prototype 原型模式 3.3 request 3.4 session 3.5 application 3.6 websocket 一、什么是Bean的作用域 在之前学习的过程中,我们把作用域定义为:限定程序中变…

目录

一、什么是Bean的作用域

二、@Scope注解

三、Bean的6种作用域

3.1 singleton单例模式

3.2 prototype 原型模式

3.3 request

3.4 session

3.5 application

3.6 websocket


一、什么是Bean的作用域

在之前学习的过程中,我们把作用域定义为:限定程序中变量的可用范围,或者说是定义变量的某个区域。但是,在Bean中,这个作用域指的是Bean在Spring框架中的某种行为。接下来以一个案例分析一下

首先创建一个User类,同时创建一个Users类将User对象储存到Spring中,这里都是利用注解的方式,以后也是采取这种方式了

public class User {private String name;private int id;@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", id=" + id +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}
}
@Component
public class Users {@Beanpublic User user() {User user = new User();user.setName("公共名");user.setId(1);return user;}
}

这里有一个需求就是一个开发人员需要获取到这个User类的对象,并将这个User类对象中原始的“公共名”改成张三,并且不能修改原类名!

在这个操作中,开发人员并没有直接拿user对象去修改其中的属性,而是另外创建了一个user1去接收user同时在user1中对name属性进行修改

@Controller
public class UserController1 {@Resourceprivate User user;public void setName() {User user1 = user;user1.setName("张三");System.out.println(user1);}
}

通过在Spring的配置文件中配置注解扫描路径,然后再通过Spring提供的工厂获取到类对象。通过测试我们发现已经是成功了。

@Test
public void test() {ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml");UserController1 userController1 = ctx.getBean("userController1", UserController1.class);userController1.setName();
}    

按照思路这里应该是没有修改原来的user类的,但是突然有一天另一位开发人员需要去获取原来user类中的内容

@Controller
public class UserController2 {@Resourceprivate User user;public void getUser() {System.out.println(user);}
}
public void test() {ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml");// 这里是第一个开发人员的UserController1 userController1 = ctx.getBean("userController1", UserController1.class);userController1.setName();// 第二个开发人员的UserController2 userController2 = ctx.getBean("userController2", UserController2.class);userController2.getUser();
}

这里测试就会发现有问题了,原始类中的name也被修改了,其实这就是我们说的Bean的作用域因为Bean作用域默认是Singleton,所以这里只会创建出一个对象!

 

二、@Scope注解

对于上述的问题我们要怎么去解决呢?我们这里引入一个新的注解@Scope来设置Bean的作用域,这里将Bean的作用域设置为“prototype”原型模式(多例模式)

@Component
public class Users {@Bean("user")@Scope("prototype")public User user() {User user = new User();user.setName("公共名");user.setId(1);return user;}
}

 再次运行测试程序,我们发现这个问题就解决了

除了直接写上作用域的方式@Scope还提供了一种添加作用域的方式:使用枚举设置,这种方式和直接写作用域名称的方式是等价的

@Component
public class Users {@Bean("user")@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)public User user() {User user = new User();user.setName("公共名");user.setId(1);return user;}
}

三、Bean的6种作用域

3.1 singleton单例模式

描述:该作用域下的Bean在IoC容器中只有一个实例:获取Bean(即通过
applicationContext.getBean等⽅法获取)及装配Bean(即通过@Autowired注⼊)都是同⼀个对象

场景:通常⽆状态的Bean使⽤该作⽤域。⽆状态表示Bean对象的属性状态不需要更新

备注:Spring默认选择该作用域

3.2 prototype 原型模式

描述:每次对该作⽤域下的Bean的请求都会创建新的实例:获取Bean(即通过applicationContext.getBean等⽅法获取)及装配Bean(即通过@Autowired注⼊)都是新的对象实例。
场景:通常有状态的Bean使⽤该作⽤域

3.3 request

描述:每次http请求会创建新的Bean实例,类似于prototype
场景:⼀次http的请求和响应的共享Bean
备注:限定SpringMVC中使⽤

3.4 session

描述:在⼀个http session中,定义⼀个Bean实例
场景:⽤户回话的共享Bean, ⽐如:记录⼀个⽤户的登陆信息
备注:限定SpringMVC中使⽤

3.5 application

描述:在⼀个http servlet Context中,定义⼀个Bean实例
场景:Web应⽤的上下⽂信息,⽐如:记录⼀个应⽤的共享信息
备注:限定SpringMVC中使⽤

3.6 websocket

描述:在⼀个HTTP WebSocket的⽣命周期中,定义⼀个Bean实例场景:WebSocket的每次会话中,保存了⼀个Map结构的头信息,将⽤来包裹客户端消息头。第⼀次初始化后,直到WebSocket结束都是同⼀个Bean。
备注:限定Spring WebSocket中使⽤

http://www.yayakq.cn/news/571854/

相关文章:

  • 越秀建设网站html网页制作期末大作业成品
  • 如何让搜索引擎不收录网站wordpress注册完成请检查电子邮件
  • 手机模板网站模板下载网站有哪些内容东营建设网站公司电话号码
  • 搜索引擎营销的五大特点连云港关键字优化预订
  • 西安 北郊网站建设如何查看网站跳出率
  • 微信端网站开发模板地名网站建设费用
  • 微网站设计与开发教程长沙微网站开发
  • 机械企业网站模板 蓝色大气 dede织梦企业模板网站数据库连接不上的常见问题
  • 南宁建设网站政务网站群建设
  • 网站开发和游戏开发哪个难静态网页制作实训报告
  • 旅游网站排名前5位的平面设计培训班学费一般要多少钱
  • 建设网站需要了解什么WordPress大前端设置背景
  • 房地产网站怎么建设烟台专业做网站的公司
  • 在北京做家教的网站电子商务网站分析
  • 企业网站开发介绍网页浏览器推荐
  • 特效网站模板城镇建设部网站
  • 房地产营销门户网站开发怎么免费做文学网站
  • 电商网站项目经验介绍ppt模板桂林网站优化公司
  • 做网站 图片侵权工程公司取名字大全
  • 网站做关键词搜索要好多钱湖南网站开发公司电话
  • 沙坪坝网站建设如何更改网站源码
  • 广州十度网络网站开发最好网络工程师是青春饭吗
  • 做公众号的素材网站怎么制作小视频
  • 一分钟企业宣传片怎么拍青岛网站建设seo优化制作设计
  • 汕头cms建站模板邯郸新闻
  • 郑州网站建设知乎学电商运营需要多少钱
  • 东台做网站公司楼盘网站开发报价
  • 湖北大网站建设软件系统开发与设计
  • 国企网站建设需要注意什么有什么网站可以做3d
  • 网站建立的流程餐饮网站建设的毕设报告