slf4j自动绑定实现类原理

slf4j自动绑定实现类的方式基于约定:它要求你在实现类的包名和拿到LoggerFactory实例的文件路径必须是:org/slf4j/impl/StaticLoggerBinder.class

有了这个约定就好办了,slf4j在自己的基本类LoggerFactory里,直接调用实现类StaticLoggerBinder拿到LoggerFactory的实例

看代码:下面是我自己实现的一个:StaticLoggerBinder

public class StaticLoggerBinder {

private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder();

private static final String loggerFactoryClassStr = MyLoggerFactory.class.getName();

public static final StaticLoggerBinder getSingleton() {

return SINGLETON;

}

/**

* 初始化我自己的LoggerFactory

*

*/

private StaticLoggerBinder() {

loggerFactory = new MyLoggerFactory();

}

private final ILoggerFactory loggerFactory;

/**

* 得到实现类

*

* @return

*/

public ILoggerFactory getLoggerFactory() {

return loggerFactory;

}

/**

* 得到实现类的名字

*

* @return

*/

public String getLoggerFactoryClassStr() {

return loggerFactoryClassStr;

}

}

slf4j自动绑定实现类原理

时间: 2024-08-07 00:16:07

slf4j自动绑定实现类原理的相关文章

slf自动绑定实现类过程判断

按照绑定实现类的方式是基于约定原则:判断分以下几个步骤 1.LoggerFactory扫描实现类路径有几个实现类,即在org/slf4j/impl/下有几个StaticLoggerBinder.class 2.如果有多个实现类,向开发人员报告多个实现类的路径 3.如果有多个实现类,向开发人员报告真正绑定的是哪一个实现类 4.如果没有实现类,怎么办? 具体代码实现 //要扫描的文件路径 private static String STATIC_LOGGER_BINDER_PATH = "org/s

cocos2dx lua 如何自动绑定自定义类

cococs2dx 3.13.1 + vs2013 + win10 1.首先定义C++类Student 在cocos2d-x\cocos文件夹下新建一个user_define的文件夹放置两个文件. 注意:这个类没有从Ref继承,是一个简单的C++类. ①头文件Student.h 1 #pragma once 2 3 #include "base/ccMacros.h" 4 #include <iostream> 5 #include <string> 6 7 /

cocos2dx lua 绑定之二:手动绑定自定义类中的函数

cococs2dx 3.13.1 + vs2013 + win10 1.首先按照<cocos2dx lua 绑定之一:自动绑定自定义类>绑定Student类 2.在Student类中增加一个用于测试手动绑定的函数manual_call ①Student.h中增加函数 //手动绑定调用函数 void manual_call(); ②Student.cpp中增加函数实现 //和自动绑定相比,只增加了这个函数 void Student::manual_call() { std::cout <&

最新iOS 6 in Xcode4.5新特性——Storyboard和属性自动绑定

最新iOS 6 in Xcode4.5新特性编程之二(上)——Storyboard和属性自动绑定 从Xcode 4.3开始,Storyboard 就是iOS 5和iOS 6中令人兴奋的一个新特性,他将为你在创建用户界面上节省很多时间. 那么究竟什么是Storyboard呢?我将用一幅图片来向你展示: 下面这个就是本实例中即将用到的Storyboard. 关于故事板编程,我在“最新Xcode 4.3.2 下使用Storyboard和ARC开发iPhone4程序 03——Storyboard类及使用

在cocos2d-js实现自动绑定cocostudioUI控件与事件

一.起因 在客户端游戏开发中最让人恶心的工作就是UI相关的东西,虽然有了像cocostudio这样的可视化工具,但界面中有大量需要由代码访问的控件的时候,需要写太多重复的代码例如: //加载UI配置文件 var root = ccs.uiReader.widgetFromJsonFile("res/cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json"); this._mainNode.addChild(root); /

asp.netMVC中的自动绑定模型测试小结

很久没有自己测试测试一些东西了,今天特意测试了一下MVC中自动绑定模型.本人也是小菜,希望能帮助到小小菜....嘿嘿 1.首先,创建一个MVC4的项目 2.创建一个Controller(控制器),有些小小菜肯定也知道Home是路由里默认的. 3.控制器都有了,默认会有个Index动作方法,我们只需要在拷贝一个接受Post请求的action即可 public ActionResult Index() { return View(); } [HttpPost] //视图中加的是实体类中的属性名对应

laravel的源码解析:PHP自动加载功能原理解析

前言 这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能.PHP的命名空间.PHP的PSR0与PSR4标准等内容. 一.PHP自动加载功能 PHP自动加载功能的由来 在PHP开发过程中,如果希望从外部引入一个 class,通常会使用 include 和 require 方法,去把定义这个 class 的文件包含进来.这个在小规模开发的时候,没什么大问题.但在大型的开发项目中,使用这种方式会带来一些隐含的问题:如果一个 PHP 文件需要使用很多其它类,那么就需要很多的 requ

框架开发(五)----自动加载类

一 . 为什么自动加载 自动加载字面的意思就不解释了.我这里自动加载类解析下 是自动加载类文件的意思.__autoload方法完全可行,但是不要问为什么,还是用spl_autoload_register.不只是灵活,而且就是灵活,还是灵活,体现在__autoload只能这么命名,spl_auto_register() 能调用不同的函数. 二  自动加载函数原理   通常情况下,一个类的定义都是一个文件,当类与类需要相互引用的时候,就需要include(require)相应的类文件,带来的问题就是

php7扩展自动加载类.

使用php扩展来开发框架似乎越来越来成来主流了,如phalcon,鸟哥的yaf.这些框架都以高性能著称,相对纯php使用的框架而,php扩展实现的框架更快,不会带来额外的系统消耗.在php启动时便已加载了框架,并且常驻内存. 几乎所有框架都带自动加载类,以便更好的管理代码.php实现方法这里就不多介绍了,读者可以自行百度.这里将介绍如何在php扩展中实现. 扩展中的实现原理与php实现基本原理一致,都是基于 spl_autoload_register 函数实现. ZEND_METHOD(lxx_