SSM框架中日誌的打印和單例模式(六)
阿新 • • 發佈:2018-06-23
targe ssi ffffff append SSM框架 核心 AS per 輸出
一、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,直接返回
SSM框架中日誌的打印和單例模式(六)