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

spring4第6课-bean之间的关系+bean的作用范围

总结:

①bean之间的关系有  1,继承; 2,依赖; 3,引用;

②bean的作用范围(scope)

1,singleton Spring ioc 容器中仅有一个 Bean 实例,Bean 以单例的方式存在;(重点)
2,prototype 每次从容器中调用 Bean 时,都返回一个新的实例;(重点)
3,request 每次 HTTP 请求都会创建一个新的 Bean;
4,session 同一个 HTTP Session 共享一个 Bean;
5,global session 同一个全局 Session 共享一个 Bean,一般用于 Portlet 应用环境;(使用不多)
6,application 同一个 Application 共享一个 Bean;

详解如下:↓↓↓↓↓

①bean之间的关系有  1,继承; 2,依赖; 3,引用;

结合代码看比较好理解

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="dog" class="com.java1234.entity.Dog"><property name="name" value="jack"></property></bean><bean id="abstractPeople" class="com.java1234.entity.People" abstract="true"> <!--abstract="true"表示是抽象类-->
      <!--抽象类中可以定义一些公共属性。都是高三5班的--><property name="className" value="高三5班"></property> <!--抽象类中可以定义一些公共属性,大部分人年龄都是19--><property name="age" value="19"></property>     </bean><!--开始定义具体的人, parent="abstractPeople" 表示继承关系zhangsan这个bean继承abstractPeople这个bean-->
<!-- depends-on="autority"表示依赖关系即在初始化zhangsan之前需要先初始化autority这个bean--><bean id="zhangsan" parent="abstractPeople" depends-on="autority"><property name="id" value="1"></property><property name="name" value="张三"></property></bean><bean id="lisi" parent="abstractPeople"><property name="id" value="2"></property><property name="name" value="李四"></property><property name="age" value="20"></property>  <!--李四的年龄和其他人不一样,age的值可以重写为20--><property name="dog" ref="dog"></property>  <!-- ref="dog" 表示引用关系dog这个属性引用dog这个bean,前面学过,不重复了 --></bean><!-- 定义一个权限类Authority--><bean id="autority" class="com.java1234.service.Authority"></bean>
</beans>

②bean的作用范围(scope)

1,singleton Spring ioc 容器中仅有一个 Bean 实例,Bean 以单例的方式存在;(重点)
2,prototype 每次从容器中调用 Bean 时,都返回一个新的实例;(重点)
3,request 每次 HTTP 请求都会创建一个新的 Bean;
4,session 同一个 HTTP Session 共享一个 Bean;
5,global session 同一个全局 Session 共享一个 Bean,一般用于 Portlet 应用环境;(使用不多)
6,application 同一个 Application 共享一个 Bean;

详解如下:↓↓↓↓↓

代码1:bean.xml  关键字是   scope="singleton"  spring的默认值是singleton

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- scope="singleton" 默认是singleton--><bean id="dog" class="com.java1234.entity.Dog" scope="singleton"><property name="name" value="jack"></property></bean>
</beans>

代码2: bean类

package com.java1234.entity;public class Dog {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}

代码3:测试类

package com.java1234.test;import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.java1234.entity.Dog;public class T {private ApplicationContext ac;@Beforepublic void setUp() throws Exception {ac=new ClassPathXmlApplicationContext("beans.xml");}@Testpublic void test1() {Dog dog=(Dog)ac.getBean("dog");Dog dog2=(Dog)ac.getBean("dog");System.out.println(dog==dog2);}}

运行结果: bean.xml内容不同,输出结果不同
scope="singleton" 单例模式时,每次都取1个同一个dog对象,所以两次的dog对象相同,输出true
scope="prototype" 多例模式时,每次都会取1个新的dog对象,所以两个dog对象不同,输出false

http://www.xdnf.cn/news/870283.html

相关文章:

  • [C]extern声明变量报错:undefined reference终极解决方案
  • 《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- 第一篇:MIPI CSI-2基础入门
  • 【AAOS】【源码分析】用户管理(二)-- 用户启动
  • APx500录制波形
  • Qt Creator工具编译器配置
  • Oj系统测试报告
  • 第3章(新)Day3-Python逻辑语句
  • Java 创建线程池的几种方式
  • Python基础:文件简单操作
  • OpenCV CUDA模块图像处理------创建CUDA加速的Canny边缘检测器对象createCannyEdgeDetector()
  • 使用 useSearchParams 的一个没有触发控制台报错的错误用法
  • STL 库基础概念与示例
  • 洛谷每日1题-------Day39__P1697 [USACO18JAN] Lifeguards B
  • Vue 生命周期全解析:从创建到销毁的完整旅程
  • Redisson - 实现延迟队列
  • 通过ca证书的方式设置允许远程访问Docker服务
  • 吴恩达机器学习讲义概述
  • 在虚拟宇宙中低语——进程间通信,Linux命名管道的前世今生
  • 哈希表入门:用 C 语言实现简单哈希表(开放寻址法解决冲突)
  • 9.RV1126-OPENCV 视频的膨胀和腐蚀
  • 基于windows系统的netcore架构与SqlServer数据库,实现双机热备。
  • 基于javaweb的SpringBoot公司日常考勤系统设计与实现(源码+文档+部署讲解)
  • 新手小白深入 BCI:实践与进阶(下)
  • 函数调用(Function Calling)
  • 子网划分例题
  • 【Git 合并冲突解决记录:从 “refusing to merge unrelated histories“ 到批量冲突处理】
  • 《高等数学》(同济大学·第7版)第一章第七节无穷小的比较
  • leetcode题解236:二叉树的最近公共祖先
  • 多层感知器MLP实现非线性分类(原理)
  • UDP包大小与丢包率的关系:原理分析与优化实践