课程链接:

本节主要讲了四大块

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的配置项及作用域的更多相关文章

  1. Spring Boot -01- 快速入门篇(图文教程)

    Spring Boot -01- 快速入门篇(图文教程) 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到[慕课网]手机 app ...

  2. Spring实践系列-入门篇(一)

    本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...

  3. Spring Cloud Alibaba入门篇

    学习条件 了解web三层架构 熟练应用SSM架构 了解Maven管理工具的使用 熟练使用SpringBoot,以及了解SpringBoot基本原理. 了解部分术语:应用.工具.耦合.负载等 温馨提示: ...

  4. Spring Data JPA 入门篇

    Spring Data JPA是什么 它是Spring基于ORM框架(如hibernate,Mybatis等).JPA规范(Java Persistence API)封装的一套 JPA应用框架,可使开 ...

  5. spring boot 学习入门篇【spring boot项目的搭建以及如何加载jsp界面】

    [ 前言]  Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...

  6. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  7. Spring Boot(一):入门篇+前端访问后端

    转自:Spring Boot(一):入门篇 什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发 ...

  8. (转)Spring boot(一):入门篇

    https://www.cnblogs.com/ityouknow/p/5662753.html#!comments 构建微服务:Spring boot 入门篇 什么是Spring Boot Spri ...

  9. Spring Boot(一):入门篇

    Spring Boot(一):入门篇 一.Spring Boot介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 该框架 ...

  10. Spring Cloud Alibaba(1)---入门篇

    Spring Cloud Alibaba入门篇 有关微服务的一些概念的东西我这里就不再阐述了,因为之前在写Spring Cloud系列的时候都有详细写过. 具体地址: Spring Cloud系列博客 ...

随机推荐

  1. CF796B Find The Bone

    Zane the wizard is going to perform a magic show shuffling the cups. There are n cups, numbered from ...

  2. php实现页面跳转的几种方式

    PHP中实现页面跳转有一下几种方式,看了几个人写的不是很条理,自己整理一下 在PHP脚本代码中实现 <?php header("location:url地址") ?> ...

  3. Oracle 11g服务OracleDBConsoleorcl启动失败(异常或报错)

    OracleDBConsoleorcl:Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl.在运行Enterprise Manager(企业管理器OEM)的时候,需要 ...

  4. PreparedStatement是如何防止SQL注入的?

    为什么在Java中PreparedStatement能够有效防止SQL注入?这可能是每个Java程序员思考过的问题. 首先我们来看下直观的现象(注:需要提前打开mysql的SQL文日志) 1. 不使用 ...

  5. Ubuntu 14.04下MySQL服务器和客户端的安装

    下面进行简单的配置 安装完成后通过修改/etc/mysql/my.cnf(此文件为mysql的配置文件).将文件中的binding-address=127.0.0.1注释掉.其它配置根据需要更改. H ...

  6. python3 多线程笔记

    import threadingimport time #继承 class threading.Threadclass MyThread(threading.Thread): #类做初始化 def _ ...

  7. Python学习笔记_零碎知识

    1. 变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言.静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错. 2. Python有两种除法: /除法计算结果是浮点数, ...

  8. grep常用选项记录

    grep: 一.常用选项:    -i 不区分大小写针对单个字符    -v 显示不包括查找字符的所有行    -o 只打印出匹配到的字符    -c 显示有多少行被匹配到    -e 可以使用多个表 ...

  9. win10重装完登录不了微软账号

    in10重装完登录不了微软账号解决方法如下: 点击win键+R,然后输入services.msc回车,进入本地服务管理,查看以下服务是否正常启用了: Microsoft Account Sign-in ...

  10. Nuxt 2.3.X 配置sass

    1.需要安装node-sass和sass-loader就行了 npm i -S node-sass sass-loader