zoukankan      html  css  js  c++  java
  • SSM框架中日志的打印和单例模式(六)

    一、SSM框架中日志输出

    1、src根目录下配置log4j.properties文件

    #设置输出级别和输出目的地#
    log4j.rootLogger=info, stdout,logfile
    
    #把信息输出到控制台#
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.err
    log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
    
    #把信息输出到目标文件#
    log4j.appender.logfile=org.apache.log4j.FileAppender
    log4j.appender.logfile.File=f://File//arizhi.txt
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.Conversio
    nPattern=%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n

    2、创建日志类,并导入log4j的jar包

    @Component("myLogger")
    public class MyLogger {
        
        private static final Logger logger = Logger.getLogger(MyLogger.class);
        
        public void log(JoinPoint join){
            logger.info(join.getTarget().getClass().getSimpleName()+"的"
                    +join.getSignature().getName()+"方法,参数是"
                    +Arrays.toString(join.getArgs())+"执行了");
        }
    }

    3、配置spring核心配置文件

    <!-- 日志的输出 -->
        <aop:config>
            <aop:pointcut expression="execution(* com.action.*.*(..))" id="log"/>
            <aop:aspect ref="myLogger">
                <aop:before method="log" pointcut-ref="log"/>
            </aop:aspect>
        </aop:config>

    二、单例的两种模式

    1、懒汉模式(类加载时不初始化)

    package Singleton;
    
    public class LazySingleton {
        //懒汉式单例模式
        //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
        
        private static LazySingleton intance = null;//静态私用成员,没有初始化
        
        private LazySingleton()
        {
            //私有构造函数
        }
        
        public static synchronized LazySingleton getInstance()    //静态,同步,公开访问点
        {
            if(intance == null)
            {
                intance = new LazySingleton();
            }
            return intance;
        }
    }

      关键点:

      1)构造函数定义为私有----不能在别的类中来获取该类的对象,只能在类自身中得到自己的对象

      2)成员变量为static的,没有初始化----类加载快,但访问类的唯一实例慢,static保证在自身类中获取自身对象

      3)公开访问点getInstance: public和synchronized的-----public保证对外公开,同步保证多线程时的正确性(因为类变量不是在加载时初始化的)

    2、饿汉模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快)

    public class EagerSingleton {
        //饿汉单例模式
        //在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快
        
        private static EagerSingleton instance = new EagerSingleton();//静态私有成员,已初始化
        
        private EagerSingleton() 
        {
            //私有构造函数
        }
        
        public static EagerSingleton getInstance()    //静态,不用同步(类加载时已初始化,不会有多线程的问题)
        {
            return instance;
        }
    }

      关键点:

      1)私有构造函数

      2)静态私有成员--在类加载时已初始化

      3)公开访问点getInstance-----不需要同步,因为在类加载时已经初始化完毕,也不需要判断null,直接返回

  • 相关阅读:
    Atitit 华为基本法 attilax读后感
    Atitit 华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感
    Atitit 项目版本管理gitflow 与 Forking的对比与使用
    Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
    Atitit 乌合之众读后感attilax总结 与读后感结构规范总结
    深入理解 JavaScript 异步系列(4)—— Generator
    深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise
    深入理解 JavaScript 异步系列(2)—— jquery的解决方案
    深入理解 JavaScript 异步系列(1)——基础
    使用 github + jekyll 搭建个人博客
  • 原文地址:https://www.cnblogs.com/newbest/p/9215746.html
Copyright © 2011-2022 走看看