SSM框架中日志的打印和单例模式(六)

匿名 (未验证) 提交于 2019-12-03 00:32:02

一、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,直接返回

原文:https://www.cnblogs.com/newbest/p/9215746.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!