@SpringBootApplication
springboot的核心注解类,主要目的是开启自动配置,是一个组合注解,主要组合了以下注解
@SpringBootConfiguration
这是SpringBoot项目的配置注解,这也是一个组合注解,在SpringBoot项目中推荐使用@SpringBootConfiguration代替@Configuration
@EnableAutoConfiguration
启动自动配置,该注解会使SpringBoot根据项目中以来的jar包自动配置项目的配置项.
比如:我们天际了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,SpringBoot就会自动配置tomcat和SpringMVC
@ComponentScan
默认扫描@SpringBootApplication所在类的同级目录以及他的子目录
@SpringBootApplication(exclude={RedisAutoConfiguration.class})
关闭Redis自动配置,其他类似
@Configuration
表示这是一个spring的配置类
@Controller
表明这是一个springMVC的Controller控制器
main方法,在main中启动一个应用,即这个应用的入口
@Profiles
Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机
@Configuration
@Profile("production")
public class ProductionConfiguration {
// ...
}
@Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。一般公共的方法我会用上这个注解
@ControllerAdvice
全局处理异常
@ExceptionHandler(Exception.class)
用在方法上面表示遇到这个异常就执行以下方法。
/**
* 全局异常处理
*/
@ControllerAdvice
class GlobalDefaultExceptionHandler {
public static final String DEFAULT_ERROR_VIEW = "error";
@ExceptionHandler({TypeMismatchException.class,NumberFormatException.class})
public ModelAndView formatErrorHandler(HttpServletRequest req, Exception e) throws Exception {
ModelAndView mav = new ModelAndView();
mav.addObject("error","参数类型错误");
mav.addObject("exception", e);
mav.addObject("url", RequestUtils.getCompleteRequestUrl(req));
mav.addObject("timestamp", new Date());
mav.setViewName(DEFAULT_ERROR_VIEW);
return mav;
}}
条件注解
@ConditionOnBean 当容器里有指定Bean的条件下
@ConditionOnClass 当类路径下有指定的类的条件下
@ConditionOnExpression 基于SpEL标段数作为判断条件
@ConditionOnJava 基于JVM版本作为判断条件
@ConditionOnJndi 在JNDI存在的条件下查找指定的位置
@ConditionOnMissingBean 当容器里没有指定Bean的情况下
@ConditionOnNotWebApplication 当类路径下没有指定的类的条件下
@ConditionOnProperty 指定的属性是否有指定的值
@ConditionOnResource 类路径是否有指定的值
@ConditionOnSingleCandidate 当指定Bean在容器中只有一个,或者虽然有多个,但是指定首选的Bean
@ConditionOnWebApplication 当前项目是在Web项目的条件下