代码顺序有问题。

添加LOG的依赖

<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>

		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
		</dependency>

我们添加完了之后发现程序还有警告。

Resource leak: 'applicationContext' is never closed

是因为我们没有关闭ApplicationContext。

在Java 1.7之后,我们可以使用try-with-resource来自动的关闭。

		try (AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(DemoApplication.class)) {
			ComponentDAO bean1 = applicationContext.getBean(ComponentDAO.class);
			ComponentDAO bean2 = applicationContext.getBean(ComponentDAO.class);
			LOGGER.info("{}", bean1);
			LOGGER.info("{}", bean1.getJdbcConnection());

			LOGGER.info("{}", bean2);
			LOGGER.info("{}", bean2.getJdbcConnection());
		}

	}

Java中的Log

我们先来看一下slf4j, slf4j只是一种日志的门面和日志抽象框架,而java.util.logging,log4j,logback都是slf4j抽象框架的具体实现,只要调用slf4j的API就可以集成任何的实现框架在一起。

xt4gsulb3s

  • logging

Java内部自带的日志工具,java.util包下。

  • log4j

Apache下的一个开源日志框架,也是目前应用最广的一个日志框架。

  • logback

    logback是slf4j的原生实现框架,同样是log4j同一个人之手,但拥有比log4j更多的优点和更多的特性,用来代替log4j。logback 重写了内部的实现,在某些特定的场景上面,甚至可以比之前的速度快上10倍。在保证logback的组件更加快速的同时,同时所需的内存更加少。

现在一般都会使用logback了。

参考文章

英文:https://logback.qos.ch/reasonsToSwitch.html

中文:http://www.oschina.net/translate/reasons-to-prefer-logbak-over-log4j