/饿汉式的代码如下://方式一:直接new出来
public class Single01 {private Single01 (){}//只执行一次private static Single01 single = new Single01 ();public static Single01 getInstance (){return single ;}}//方式二:使用静态代码块private static SqlSessionFactory sessionFactory ;static {try {String resource = "SqlMapConfig.xml" ;
// 根据mybatis的全局配置文件构造 一个流InputStream inputStream = Resources . getResourceAsStream ( resource );
// 创建SqlSessionFactorysessionFactory = new SqlSessionFactoryBuilder (). build ( inputStream );} catch ( IOException e ) {e . printStackTrace ();}}//懒汉式的代码如下:public class Single02 {//私有化构造方法是为了不让外界创建对象private Single02 (){}//静态的成员只执行一次,在类加载的时候执行,系统会给一个默认的初始化值nullprivate static Single02 single ;public static Single02 getInstance (){if ( single == null ){ //这个single是null的时候才创建对象single = new Single02 ();}return single ;}}//处理高并发的线程的懒汉式public static SqlSessionFactory newIncetance () {if ( sessionFactory == null ) {//A Bsynchronized ( MybatisUtils . class ) {if ( sessionFactory == null ) {try {String resource = "SqlMapConfig.xml" ;
// 根据mybatis的全局配置文件构造 一个流InputStream inputStream = Resources . getResourceAsStream ( resource );
// 创建SqlSessionFactorysessionFactory = new SqlSessionFactoryBuilder (). build ( inputStream );} catch ( IOException e ) {e . printStackTrace ();}}}}return sessionFactory ;}
单例的几种常用的设计模式(面试)
最新推荐文章于 2023-02-20 18:38:46 发布