springboot最关键三个注解,大白话解释

springboot启动关键三个注解

springboot项目为何说是减少很多繁琐配置?在这背后隐藏着一层一层的秘密是什么?答案:因为一层一层的注解从而减少了一层一层的配置文件

下面就让我给大家讲解下,是如何通过注解来实现减少配置文件?

@SpringBootApplication注解为整个springboot启动入口,里面包含最为重要的的三个注解,虽然有很多注解但是其余都是辅助注解类似于标识注解,只针对1.2.3最为重要注解进行详细解释
1.
@SpringBootConfiguration
2.
@EnableAutoConfiguration
3.
@ComponentScan
4.
@Target({ElementType.TYPE}) //接口、类、枚举
5.
@Retention(RetentionPolicy.RUNTIME) // 注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在
6.
@Documented//用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。
7.
@Inherited//被元注解Inherited修饰的注解,只有作用在类上时,会被子类继承此自定义的注解,其余情况都不会继承

@SpringBootConfiguration(我们理解为相当于我们在项目启动时候加载配置文件列如: src/main/resources/application.yml等文件),里面包含一个注解@Configuration

  1. @Configuration(其实就是将配置文件初始化spring ioc容器中类似于加载xml文件并且运用bean注解来讲需要的工具加载spring ioc容器:举例:我们的springboot配置redis使用) 可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件。 @Bean作用于方法上,其实就相当于xml配置文件中的bean,表示创建一个Bean,方法的返回值类型表示该Bean的类型,方法名表示该Bean的ID。其实在我们开发过程中比如加载dubbo.xml文件也可以用@Configuration注解,其实很多地方能用到线程池配置,druid数据源配置,MQ配置等

java代码使用举例:

@Configuration
public class RedisConfig {

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// jackson2JsonRedisSerializer
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// stringRedisSerializer
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}

2.@EnableAutoConfiguration: 是spring boot的核心功能,自动配置。 @EnableAutoConfiguration 是借助 @Import 把所有符合条件的 Bean 加载到 SpringIoc 容器中。,例如:mq 在springboot中使用rabbitmq,我们无需使用@EnableRabbit注解,只需引入依赖即可,这就是上面的自动配置包实现的功能。里面有@Import注解,顾名思义,就是将pom文件中一些jar交给spring ioc容器,这样我们在开发时候直接引用jar包方法就可以直接使用了,@EnableAutoConfiguration就是将他们自动配置到spring ioc容器中了

3.@ComponentScan 通俗的讲,@ComponentScan 注解会自动扫描指定包下的全部标有 @Component注解 的类,并注册成bean,当然包括 @Component 下的子注解@Service、@Repository、@Controller。@ComponentScan 注解。(将相当于将我们接口上一些@RestController这些注解初始化到spring ioc容器中,交给spring管理,基本就是扫描包下面的所有注解到sping ioc容器)

后期给大家讲解dubbo和spring cloud 的一些区别,也是面试经常问到的

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值