springboot注解详解

代码标注注解

@RestController:标示当前类是一个控制类,是springboot提供的基于restfull风格开发,该注解是一个组合注解,
由@Controller和@ResponseBody构成,如果当前类标示RestController,则在返回数据是以json格式返回。

@RequestMapping:标示访问方法路径,主要是为了提供路由选择,当通过http访问时,会映射到指定的url.

@PostConstruct:在构造函数执行完成之后执行

@PreDestory: 在bean销毁前执行

@Scheduled: 声明一个计划任务,需要在启动类上增加@EnableScheduling注解开启对计划任务的支持。

Scheduled包含cron(unix下定时任务)、fixDelay(延时执行)、fixRate(间隔固定时间执行)。

@Configuration:声明当前类是一个配置类,相当于xml中配置的bean.
@Bean : 注解在方法上,声明当前方法返回一个Bean对象。

启动入口类注解

@SpringBootApplication: Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解。

该注解主要组合了以下注解:
1. @SpringBootConfiguration:这是Spring Boot项目的配置注解,这也是一个组合注解,在Spring Boot项目中推荐使用@ SpringBootConfiguration替代@Configuration,@Configuration注解该类,等价于XML中配置beans;用@Bean标注方法等价于XML中配置bean.
2. @EnableAutoConfiguration:启用自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置项目的配置项:例如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC

3. @ComponentScan:默认扫描@SpringBootApplication所在类的同级目录以及它的所有子目录。

@SpringBootApplication可以在初始化时排除一些配置。例如:需要排除Redis等配置,只需要在@SpringBootApplication中添加如@SpringBootApplication(exclude = RedisAutoConfiguration.class)即可。这样在启动时就不会注入redis.



引入外部资源注解

@ImportResource:导入外部自定义配置文件,例如自定义redis-context.xml配置文件,需要导入使用@ImportResource({"classpath:redis-context.xlm"})即可。

@ConfigurationProperties:加载属性配置,通过引入application.properties配置文件中的属性。例如通过配置文件获取durid数据库配置,@ConfigurationProperties(prefix = "spring.datasource.druid")

@Profile: 在不同的环境使用不同的配置文件,通过spring.profiles.active(dev,test,prod)参数配置环境。
@PropertySource:引入外部配置文件,例如:@PropertySource("classpath:application.properties")


条件注解

Spring Boot的强大之处在于使用了Spring 4框架的新特性:@Conditional注释,此注释使得只有在特定条件满足时才启用一些配置。 在Spring Boot的org.springframework.boot.autoconfigure.condition包中说明了使用,以下这些都是基于Condtional注解.

@ConditionalOnBean:当容器里有指定的Bean时初始化。
@ConditionalOnClass:当类路径下有指定的类时初始化。
@ConditionalOnExpression:基于Spel表达作为判断条件时。
@ConditionalOnJava:基于JVM版本作为判断条件。
@ConditionalOnJndi:在jndi存在的条件下查找指定的位置。
@ConditionalOnMissingBean:当容器里没有指定的Bean时。
@ConditionalOnMissingClass:当类路径下没有指定的类时。
@ConditionalOnNotWebApplication:当项目不是web项目时。
@ConditionalOnProperty:指定的属性是否有指定的值时.
@ConditionalOnResource:类路径是否有指定的值.
@ConditionalOnSingleCandidate:当指定的Bean在容器中只有一个或者有多个,但是指定首选的Bean.
@ConditionalOnWebApplication:当项目是web项目时.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

starsky20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值