@Configuration和@Bean
@Configuration 注解
@Configuration
注解用于定义一个配置类,该类包含一个或多个@Bean
注解的方法。这些方法将生成Spring容器管理的Bean。
使用场景
定义第三方库的Bean:当你需要在Spring容器中注册第三方库的对象时,可以使用@Bean
注解。
例如在使用Oss和redis时
@Configuration
@Slf4j
public class OssConfiguration {
@Bean
@ConditionalOnMissingBean
// 自动注入机制
//在Spring Boot应用中,@EnableConfigurationProperties注解会扫描所有使用了@ConfigurationProperties注解的类
// 并将它们注册为Spring Bean。然后,在需要使用这些Bean的地方,Spring会自动进行依赖注入。
// 当在AliOssConfig类中的aliOssUtil方法参数中声明AliOssProperties时,Spring会自动找到并注入该Bean。
public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){
log.info("开始创建阿里云文件上传工具类对象:{}",aliOssProperties);
return new AliOssUtil(aliOssProperties.getEndpoint(),
aliOssProperties.getAccessKeyId(),
aliOssProperties.getAccessKeySecret(),
aliOssProperties.getBucketName());
}
}
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
log.info("开始创建redis模板对象...");
RedisTemplate redisTemplate = new RedisTemplate();
//设置redis的连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置redis key的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}