相关疑难解决方法(0)

在静态和非静态上下文中创建SLF4J记录器的开销是多少?

我总是使用以下模式构建(SLF4J)记录器:

private static final Logger log = LoggerFactory.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)

到目前为止这已经奏效了,但我想知道static某些情况下的上下文以及需要一直传递具体的类文字,而不是仅仅使用非静态记录器

private final Logger log = LoggerFactory.getLogger(getClass());
Run Code Online (Sandbox Code Playgroud)

这之前基本上已经问过(并回答)了LOG4J

记录器应该是私有静态还是非静态

和这里

记录器应该是最终的和静态的吗?

我意识到final基本上是强制性的,所以我想知道在非静态环境中使用SLF4J的开销实际上有多高.

问:

使用是否有任何重大的实际开销

private final Logger log = LoggerFactory.getLogger(getClass());
Run Code Online (Sandbox Code Playgroud)

过度

private static final Logger log = LoggerFactory.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)

普通(网络)应用程序?(这里不需要"讨论"高端,重载的webapps)


注意,我最终计划使用更好的方法使用CDI获得SLF4J记录器

@Inject private final Logger log;
Run Code Online (Sandbox Code Playgroud)

http://www.seamframework.org/Weld/PortableExtensionsPackage#H-TtLoggerttInjection所述,但我需要先了解记录器缓存.

子问题:甚至可以使用?:

@Inject private static final Logger log;
Run Code Online (Sandbox Code Playgroud)

(刚开始用CDI开头)

java logging static slf4j cdi

26
推荐指数
1
解决办法
1万
查看次数

哪个是CDI @Produces注释的Spring等价物?

当我使用CDI时,我可以使用@Produces注释来创建一个生成器方法,以便选择实现接口的bean将由@Inject注释注入.

现在我正在使用Spring,但我没有找到类似的东西.@Produces当我使用@Autowired注释时,我需要使用什么来获得与CDI中的注释相同的结果?

java spring dependency-injection cdi

18
推荐指数
1
解决办法
9335
查看次数

如何将记录器注入示例Spring启动应用程序中的字段?

我想要的是让spring autowire成为记录器.所以,换句话说,我想让这个工作:

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";
    }
}
Run Code Online (Sandbox Code Playgroud)

现在它在启动时抛出异常:"找不到类型[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> …
Run Code Online (Sandbox Code Playgroud)

java logging spring autowired spring-boot

13
推荐指数
4
解决办法
2万
查看次数