Spring课程 Spring入门篇 3-1 Spring bean装配(上)之bean的配置项及作用域
本节主要讲了四大块
1 bean的作用域
2 bean作用域代码演练
3 单例 多例应用场景
4 bean的配置项(不重要)
1 bean的作用域
1.1 singleton :单例
1.2 prototype :多例
不重要:
1.3 request :每次http请求创建一个实例且仅在当前request有效
1.4 session :每次http请求创建,当前session内有效
1.5 global session:基于portlet的web有效(portlet中定义了global session),如果在web中,同session
2 bean作用域代码演练
2.1 singleton作用域实例
实体类:
package com.imooc.bean; public class BeanScope { /**
* say方法测试 哈希码值,判断用的是不是同一块 内存
*/
public void say(){
System.out.println("该对象的哈希码为"+this.hashCode());
} }
xml配置文件:(红色标注部分为不同)
<?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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-init-method="init" default-destroy-method="destroy"> <bean id="beanScope" class="com.imooc.bean.BeanScope" scope="singleton"></bean>
<!--<bean id="beanScope" class="com.imooc.bean.BeanScope" scope="prototype"></bean> --> </beans>
测试类:
package com.imooc.test.ioc.interfaces; import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.springframework.cglib.core.Block; import com.imooc.bean.BeanScope;
import com.imooc.test.base.UnitTestBase; @RunWith(BlockJUnit4ClassRunner.class)
public class TestBeanScope extends UnitTestBase{ public TestBeanScope() {
super("classpath*:spring-beanScope.xml");
} @Test
/**
* 测试单例模式 Signton
*/
public void testSay(){
try {
BeanScope bScope = super.getbean("beanScope");
bScope.say(); BeanScope bScope2 = super.getbean("beanScope");
bScope2.say();
} catch (Exception e) {
// TODO: handle exception
}
} }
2.2 prototype作用域实例
实体类(同上)
xml配置文件:(红色标注部分不同)
<?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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-init-method="init" default-destroy-method="destroy"> <!-- <bean id="beanScope" class="com.imooc.bean.BeanScope" scope="singleton"></bean> -->
<bean id="beanScope" class="com.imooc.bean.BeanScope" scope="prototype"></bean> </beans>
测试类(同上)
3 单例 多例应用场景
经上边应用可知:
作用域为singleton ,两次打印哈希码值相同,即,只在初始化的时候创建一个实例(即加载上下文context.xml的时候);
作用域为prototype,两次打印哈希码值不同,则每次访问都会创建一个实例。
应用场景:
如果需要回收重要资源(如数据库连接等)应该为配置为singleton,因为单个库的数据库连接只有一个。
如果是有状态的bean应配置为prototype,如生效和失效的客户。
4 bean的配置项(不重要)
4.1 Id
4.2 Class
4.3 Scope
4.4 Properties
4.5 Constructor arguments
4.6 lazy-initialization mode
Spring课程 Spring入门篇 3-1 Spring bean装配(上)之bean的配置项及作用域的更多相关文章
- Spring Boot -01- 快速入门篇(图文教程)
Spring Boot -01- 快速入门篇(图文教程) 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到[慕课网]手机 app ...
- Spring实践系列-入门篇(一)
本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...
- Spring Cloud Alibaba入门篇
学习条件 了解web三层架构 熟练应用SSM架构 了解Maven管理工具的使用 熟练使用SpringBoot,以及了解SpringBoot基本原理. 了解部分术语:应用.工具.耦合.负载等 温馨提示: ...
- Spring Data JPA 入门篇
Spring Data JPA是什么 它是Spring基于ORM框架(如hibernate,Mybatis等).JPA规范(Java Persistence API)封装的一套 JPA应用框架,可使开 ...
- spring boot 学习入门篇【spring boot项目的搭建以及如何加载jsp界面】
[ 前言] Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- Spring Boot(一):入门篇+前端访问后端
转自:Spring Boot(一):入门篇 什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发 ...
- (转)Spring boot(一):入门篇
https://www.cnblogs.com/ityouknow/p/5662753.html#!comments 构建微服务:Spring boot 入门篇 什么是Spring Boot Spri ...
- Spring Boot(一):入门篇
Spring Boot(一):入门篇 一.Spring Boot介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 该框架 ...
- Spring Cloud Alibaba(1)---入门篇
Spring Cloud Alibaba入门篇 有关微服务的一些概念的东西我这里就不再阐述了,因为之前在写Spring Cloud系列的时候都有详细写过. 具体地址: Spring Cloud系列博客 ...
随机推荐
- Python之‘数据结构’
简介 数据结构基本上就是--它们是可以处理一些数据的结构.或者说,它们是用来存储一组相关数据的.在Python里面有三种内建的数据结构--列表.元组和字典. 一.列表 list是处理一组有序项目的数据 ...
- (Python OpenGL)【1】你好顶点 PyOpenGL
原文链接(C语言环境)(Python OpenGL) 我用python实现的代码: __author__ = "WSX" from OpenGL.GLUT.freeglut imp ...
- C++ 标准库智能指针
整理一下c++中shared_ptr,weak_ptr,unique_ptr三种指针的使用案例和注意事项,让程序资源更加案例,在标准库中,需要包含<memory>,在boost库中, 一. ...
- atcoder 2579
You are taking a computer-based examination. The examination consists of N questions, and the score ...
- Qt 学习之路 2(4):信号槽
Home / Qt 学习之路 2 / Qt 学习之路 2(4):信号槽 Qt 学习之路 2(4):信号槽 豆子 2012年8月23日 Qt 学习之路 2 110条评论 信号槽是 Qt 框架引以 ...
- 微信小程序 WebSocket 使用非 443 端口连接
前言 微信小程序支持使用 WebSocket 连接到服务器,准确地说是带 SSL 的 WebSocket,而微信小程序中不允许使用带端口的 wss 连接,只能使用 443 端口.想使用其他端口就需要在 ...
- freemarker 定义公共header
<#--公共顶部--> <#macro header title="默认文字" keywords="默认文字" description=&qu ...
- 查看php 相关信息
PHP系统常量 __FILE__ 当前PHP程序脚本的绝对路径及文件名称 __LINE__ 存储该常量所在的行号 __FUNCTION__ 存储该常量所在的函数名称 __CLASS__ 存储该常量所在 ...
- light oj 1047 - Neighbor House(贪心)
The people of Mohammadpur have decided to paint each of their houses red, green, or blue. They've al ...
- linux 底层 基础命令 路径信息
z基础命令: 打印 :echo "hello world“ 切换目录 cd / 显示当前路径 pwd 显示 目录下所有文件 ls 显示所有文件包括隐藏文件 ls ...