java 单例 生命周期_单例模式--- 声明周期托管方式

声明周期托管方式,IOC

JAVA代码

MyManager.java

import java.util.HashMap;

/**

* 为了管理对象的产生

* 对象的控制权给当前类负责

* 生命周期托管实现对象的单例

* IOC控制反转

*/

public class MyManager {

// 存储所有被管理的对象

private static HashMap beanMap = new HashMap<>();

// 获取任何类的一个对象

// className : 类名

// return: (泛型T)

public static T getBean(String className) {

T obj = null;

try {

// 去beanBox看有没有存在了

obj = (T) beanMap.get(className);

if (obj == null) {

// 1. 通过类名获取类

Class clazz = Class.forName(className);

// 2. 通过反射产生一个对象

obj = (T) clazz.newInstance();

// 3. 加入集合

beanMap.put(className, obj);

}

} catch (Exception e) {

e.printStackTrace();

}

return obj;

}

}

Sign.java

// 单例模式 IOC

// 生命周期给别人托管

class Sign {

public Sign() {

System.out.println("创建了一个实例");

}

}

Demo.java

public class Demo {

public static void main(String[] args) {

// 获取一个实例

Sign instance1 = MyManager.getBean("Sign");

// 再获取一个实例 ;注意,构造函数也只是执行了一次,所以引用一个对象

Sign instance2 = MyManager.getBean("Sign");

System.out.println(instance1);

System.out.println(instance2);

if (instance1 == instance2) {

System.out.println("引用了同一个实例");

} else {

System.out.println("不是同一个实例");

}

}

}

执行结果:

1a5e7a270418335fa7d60d5ec8e81a5d.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring配置

Spring配置 别名 alias 设置别名 , 为bean设置别名 , 可以设置多个别名 <!--设置别名&#xff1a;在获取Bean的时候可以使用别名获取--> <alias name"userT" alias"userNew"/>Bean的配置 <!--bean就是java对象,由Spring创建和管理-->…

优化 Vue 项目编译文件大小

转载自 优化 Vue 项目编译文件大小与其说是优化 Vue&#xff0c;不如说主要是在 webpack 打包的配置中做些文章&#xff0c;使得 Vue 编译后的文件尽可能的小。以下介绍自己在项目中进行优化的过程&#xff0c;其中的内容也许并不适合于每个项目&#xff0c;但整体思路是差不多…

mybatis反向生成实体类、dao层以及映射文件

在做项目的时候&#xff0c;我们不得不写底层的一些繁琐代码&#xff0c;比如说实体类、dao层之类的&#xff0c;既浪费时间又费事&#xff0c;最主要的是还没效率&#xff0c;kuangkuangkuang的写半天终于写完了&#xff0c;到运行的时候dao层的代码居然还报错&#xff01;&am…

ASP.NET Core 1.1 简介

ASP.NET Core 1.1 于2016年11月16日发布。这个版本包括许多伟大的新功能以及许多错误修复和一般的增强。这个版本包含了多个新的中间件组件、针对Windows的WebListener服务器、Razor视图编译以及Azure相关的特性。要将现有项目更新到ASP.NET Core 1.1 &#xff0c;您需要执行以…

Mybatis传入参数类型为ListIntergert作为条件进行查询

Mybatis传入参数类型为List作为条件进行查询 higher2017关注 2017.02.07 10:23:16字数 130阅读 5,658 表结构&#xff1a; 表名称为constant 需求&#xff1a; 现在想查询type为2、3的所有数据&#xff08;甚至想查询type为1,2,3,4,5....,100的所有数据&#xff09;并且返回…

lombok进行有参无参构造出现的问题

查看方法 解决方法 运行成功

.NET应用迁移到.NET Core(三)从商业角度看移植过程

2016年12月1日下午微软技术大会Microsoft Ignite China&#xff0c;有幸和大家分享一门课程&#xff0c;课程信息如下&#xff0c;欢迎大家到时来捧场。本文介绍下从商业角度看移植过程。 。 创建项目移植进度表 创建移植进度表时要考虑所有可能的风险&#xff0c;包括技术和商…

Spring(笔记)

简介 Spring概述 简介 Spring : 春天 —>给软件行业带来了春天 2002年&#xff0c;Rod Jahnson首次推出了Spring框架雏形interface21框架。 2004年3月24日&#xff0c;Spring框架以interface21框架为基础&#xff0c;经过重新设计&#xff0c;发布了1.0正式版。 很难想象…

mybatis报错Type interface xxx.Dao is not known to the MapperRegistry

今天在做mybatis的时候&#xff0c;遇到一个错误&#xff0c;大家看看这个错误吧&#xff1a;org.apache.ibatis.binding.BindingException: Type interface cn.mybatis_chop10_1.dao.IEmpDao is not known to the MapperRegistry. 我前找找后找找&#xff0c;就是找不出来&…

Navicat Premium 11 12 闪退

卸载有道词典 重新安装 Navicat Premium 11

java弹弹球实验报告_Java弹球游戏实验报告—chen

Java弹球游戏实验报告—chen 课 程 设 计 报 告 题 目 弹球小游戏 姓 名 方成 学 号 20 专 业 java 指导教师 陈华恩 2013年 12 月 30 目录 一、实验目的2 二、需求分析2 三、实验任务2 1、设计3 2、程序要求&#xff1a;3 3、选作题&#xff1a;3 四、开发工具与平台3 五、设计…

.NET应用迁移到.NET Core(二)风险评估

2016年12月1日下午微软技术大会Microsoft Ignite China&#xff0c;有幸和大家分享一门课程&#xff0c;课程信息如下&#xff0c;欢迎大家到时来捧场。本文介绍下应用迁移的风险评估。 很多移植项目超出预算或未能按时完成&#xff0c;主要是因为没有很好地管理移植过程中可能…

.NET应用迁移到.NET Core(一)

2016年12月1日下午微软技术大会Microsoft Ignite China&#xff0c;有幸和大家分享一门课程&#xff0c;课程信息如下&#xff0c;欢迎大家到时来捧场。本文介绍下应用迁移的一个过程。 把一个运行在某个操作系统和硬件结构上的软件&#xff0c;在另一个操作系统和硬件结构上重…

WIN10的IE错误代码inet_e_resource_not_found解决办法

WIN10的IE错误代码inet_e_resource_not_found解决办法 原创 候鸟307183846 最后发布于2019-08-27 13:31:54 阅读数 2413 收藏 展开 解决方案&#xff1a; 1、在Internet选项里&#xff0c;点《连接》标签&#xff0c;按下《局域网设置》按钮&#xff0c;在对话框里&#…

404问题

、配置Tomcat 启动测试&#xff01; 可能遇到的问题&#xff1a;访问出现404&#xff0c;排查步骤&#xff1a; 查看控制台输出&#xff0c;看一下是不是缺少了什么jar包。如果jar包存在&#xff0c;显示无法输出&#xff0c;就在IDEA的项目发布中&#xff0c;添加lib依赖&…

@Valid注解的使用---SpringMvc中的校验框架@valid和@validation的概念及相关使用

https://www.cnblogs.com/charlypage/p/9385146.html 第5章—构建Spring Web应用程序—关于spring中的validate注解后台校验的解析 关于spring中的validate注解后台校验的解析 在后台开发过程中&#xff0c;对参数的校验成为开发环境不可缺少的一个环节。比如参数不能为null&…

java中的AIO

转载自 java中的AIO简介jdk7中新增了一些与文件(网络)I/O相关的一些api。这些API被称为NIO.2&#xff0c;或称为AIO(Asynchronous I/O)。AIO最大的一个特性就是异步能力&#xff0c;这种能力对socket与文件I/O都起作用。AIO其实是一种在读写操作结束之前允许进行其他操作的I/O…

Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)

最近在用Mybatis做项目的时候遇到了不少问题&#xff0c;今天我就在这和大家分享一下&#xff0c;稀稀拉拉的研究了两天&#xff0c;终于搞好了&#xff01; 开发人员&#xff1a;1111 开发软件&#xff1a;Myeclipse 用到的框架技术&#xff1a;Mybatis 数据库&#xff1a;MyS…

细说ASP.NET Core静态文件的缓存方式

一、前言 我们在优化Web服务的时候&#xff0c;对于静态的资源文件&#xff0c;通常都是通过客户端缓存、服务器缓存、CDN缓存&#xff0c;这三种方式来缓解客户端对于Web服务器的连接请求压力的。 本文指在这三个方面&#xff0c;在ASP.NET Core中静态文件的实现过程和使用方法…

金田项目的总结

一个搜索框对手机、姓名、内容进行搜索 <select id"list" parameterType"java.lang.String" resultMap"BaseResultMap">select<include refid"Base_Column_List"/>from user_backstagewhere 11 and is_deletedN<if te…