我想要的是让spring autowire成为 Logger . 所以,换句话说,我想让这个工作:
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MainController {
@Autowired
private Logger logger;
@RequestMapping("/")
public String enterSite(HttpServletResponse response) {
logger.info("site entered");
return "welcome";
}
}
现在它在启动时抛出异常:“找不到类型[org.slf4j.Logger]的限定bean用于依赖...” .
我的pom.xml依赖项:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.0.M1</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
<!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>
</dependency> -->
</dependencies>
我看了这个
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-logging
它说如果你使用其中一个起动器poms(我愿意)使用Logback - 但是用于内部记录 . 它可以在我的 class 中自动装配吗?
4 回答
虽然通常的方式是你可以直接在上下文中添加一个 Logger bean来重现经典绑定:
只需插入 spring 上下文:
然后你可以简单地注入你的 Logger :
如果此处的目标是代码缩减,请尝试Project Lombok . 然后你甚至不需要声明 Logger - 只需添加一个注释并使用
log
而不是logger
所以你上面的代码现在看起来像这样:
你可以让Spring自动装配一个Logger实例,但这是一件非常不寻常的事情(你需要一个
Logger
类型的bean才能进入你的应用程序环境) . 更常见的方法是初始化它声明的 Logger ,使用将用于记录的类配置它:Solution使用
@Bean
:之后,只需注入Logger: