框架升级之单例模式及统一异常处理


提示:以下是本篇文章正文内容,下面案例可供参考

单例模式

什么是单例,在数据连接或者说数据数据使用的时候在通过new 关键字创建的对象,都不是同一个对象,这样造成了一个对象不能多重调用 ,而单例对象是一次调用就一直保持不变,尽管有新的实例,也是原来的第一次使用的实例对象 并且是static的。

单例方式

1.一个类只有一个对象

  • 当前了中才能有对象 因为构造方法是被私有化了。

2.自行创建实例对象

  • 在使用这个对象的时候,在自己的类中实例化出自己。

3.对外提供静态类对象

  • 这个对象只会执行一次,在当前类中无论怎么创建实例,永远都是一个。

每一个对象都是独立的,而通过单例模式,使大家共有一个连接。

饿汉模式

在类被加载时就完成了初始化,所以类的加载比较慢,但是获取对象的速度快。

package com.bdqn.common;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 饿汉模式
 */
public class ConfigManager1 {

    private static ConfigManager1 instance = new ConfigManager1();
    private static Properties properties;


    private ConfigManager1() {
        properties = new Properties();
        try {
            InputStream res = ConfigManager3.class.getClassLoader().getResourceAsStream("db.properties");
            properties.load(res);
            res.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static ConfigManager1 getInstance() {
        return instance;
    }

    public String getPropery(String key) {
        return properties.getProperty(key);
    }

}

懒汉模式

package com.bdqn.common;

/**
 * 懒汉模式
 */
public class ConfigManager2 {

    private static ConfigManager2 instance;

    private ConfigManager2() {
    }

    public static ConfigManager2 getInstance() {
        if (instance == null) {
            instance = new ConfigManager2();
        }
        return instance;
    }


}

饿汉模式的延迟加载

package com.bdqn.common;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 饿汉延迟加载模式
 */
public class ConfigManager3 {


    private static ConfigManager3 configManager3;



    private ConfigManager3() {

    }

    private static class ConfigHelper {
        private static ConfigManager3 instance = new ConfigManager3();
    }

    public static ConfigManager3 getInstance() {
        if (configManager3 == null) {
            configManager3 = ConfigHelper.instance;
        }
        return configManager3;
    }

}

异常处理

局部异常

在指定的controller层中添加这条信息,(声明周期只在当前的Controller类中)
// 使用:在当前的controller的所有url映射中只要有一个错误,那么他就会进入异常也忙

//    @ExceptionHandler(Exception.class)
//    public String exceptionHandler(Exception exception, Model model){
//        model.addAttribute("exception",exception); //将异常信息保存到request作用域中
//        return "sysError";
//    }

全局异常

在xml中配置异常 只有页面中拥有了错误并且是指定类的中拥有的错误那么他就会进入 指定的异常页面中!!!

<!--全局异常处理-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <prop key="cn.bcsp.exception.LoginException">sysError</prop>
        </props>
    </property>
</bean>

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值