代码标注注解
@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项目时.