Spring Boot注解
@Slf4j
@Slf4j 是 Lombok 库提供的一个注解,用于在 Java 类中自动生成日志相关的代码。当在一个类上添加 @Slf4j 注解时,Lombok 会在编译时自动添加 SLF4J(Simple Logging Facade for Java)的静态日志实例。
若不使用 Lombok,代码如下:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyClass {
private static final Logger logger = LoggerFactory.getLogger(MyClass.class);
public void someMethod() {
logger.info("This is an info message");
}
}
使用 Lombok 和 @Slf4j 注解时,代码可以简化为:
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class MyClass {
public void someMethod() {
log.info("This is an info message"); // 注意这里使用的是 "log" 而不是 "logger"
}
}
@Configuration
@Configuration 是 Spring Framework 中的一个核心注解,特别是在 Spring Boot 和 Spring 的 Java Config 中。当看到或使用 @Configuration 注解时,通常是在定义一个 Java 类,该类将作为 Spring 应用程序上下文中的一个或多个 bean 的源。
@Configuration 注解关键点:
1、定义配置类:
使用 @Configuration 注解的类表示该类是一个配置类,该类可以包含 @Bean 方法,用于定义和初始化 Spring 容器中的 bean。
这些方法将被 Spring 容器调用,并且返回的 bean 将被注册到容器中。
2、替代 XML 配置:
在传统的 Spring 项目中,通常使用 XML 文件来定义 bean 和它们之间的关系。但是,使用 @Configuration 和 @Bean 注解,可以完全使用 Java 代码来替代 XML 配置。
3、组合配置:
@Configuration 类可以使用 @Import 注解来组合其他配置类。
还可以使用 @PropertySource 注解来加载外部属性文件。
4、条件化配置:
可以使用如 @ConditionalOnClass、@ConditionalOnMissingBean、@Profile 等注解来根据特定条件是否应该注册特定的 bean。
5、与其他 Spring 注解结合使用:
@Configuration 类可以与其他 Spring 注解(如 @ComponentScan、@EnableTransactionManagement、@EnableWebMvc 等)结合使用,以进一步配置 Spring 容器。
示例:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
@Bean
public AnotherService anotherService(MyService myService) {
return new AnotherServiceImpl(myService);
}
}
在上述示例中,AppConfig 是一个配置类,它定义了两个 bean:myService 和 anotherService。当 Spring 容器启动时,它将调用这两个方法,并将返回的 bean 注册到容器中。