日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

annotation java log_使用java注释来注入logger依赖关系

發(fā)布時間:2024/10/12 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 annotation java log_使用java注释来注入logger依赖关系 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

您可以使用BeanPostProcessor接口,該接口由ApplicationContext為所有創(chuàng)建的bean調(diào)用,因此您有機(jī)會填充相應(yīng)的屬性。

我創(chuàng)建了一個簡單的實現(xiàn),這樣做:

import java.lang.reflect.Field;

import java.util.List;

import net.vidageek.mirror.dsl.Mirror;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.BeansException;

import org.springframework.beans.factory.config.BeanPostProcessor;

import org.springframework.stereotype.Component;

@Component

public class LoggerPostProcessor implements BeanPostProcessor {

@Override

public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {

List fields = new Mirror().on(bean.getClass()).reflectAll().fields();

for (Field field : fields) {

if (Logger.class.isAssignableFrom(field.getType()) && new Mirror().on(field).reflect().annotation(InjectLogger.class) != null) {

new Mirror().on(bean).set().field(field).withValue(LoggerFactory.getLogger(bean.getClass()));

}

}

return bean;

}

@Override

public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {

return bean;

}

}

您不必執(zhí)行任何復(fù)雜的注冊步驟,因為ApplicationContext能夠識別BeanPostProcessor實例并自動注冊它們。

@InjectLogger注釋是:

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)

public @interface InjectLogger {

}

然后你可以輕松地使用注釋:

public static @InjectLogger Logger LOGGER;

...

LOGGER.info("Testing message");

我使用Mirror庫找到注釋的字段,但顯然你可能會執(zhí)行一個手動查找,以避免這種額外的依賴。

避免重復(fù)的代碼,甚至是從其他類復(fù)制和粘貼Logger定義的小問題,實際上是一個好主意,比如當(dāng)我們忘記更改類參數(shù)時,會導(dǎo)致錯誤的日志。

總結(jié)

以上是生活随笔為你收集整理的annotation java log_使用java注释来注入logger依赖关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。