@SpringBootApplication这是SpringBoot最核心的注解。它用在SpringBoot的主类上,用于标识这是一个SpringBoot应用,用于开启SpringBoot的各种能力。@SpringBootApplicationpublicclassBaseWebApplicationextendsSpringBootServletInitializer{@OverrideprotectedSpringApplicationBuilderconfigure(SpringApplicationBuilderbuilder){returnbuilder.sources(BaseWebApplication.class);}publicstaticvoidmain(String[]args){SpringApplication.run(BaseWebApplication.class,args)可以自动配置SpringApplication开启Boot;}}@EnableAutoConfig根据当前类路径中的包或类配置bean。@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters={@Filter(type=FilterType.CUSTOM,classes=TypeExcludeFilter.class),@Filter(type=FilterType.CUSTOM,classes=AutoConfigurationExcludeFilter.class)})public@interfaceSpringBootApplication{}@Configuration这是Spring3.0新增的注解,用于替换applicationContext.xml配置文件,通过注解配置bean。@ConfigurationpublicclassWebConfigimplementsWebMvcConfigurer{}@ComponentScan这是Spring3.1新增的一个注解,用来替代配置文件中的component-scan配置,开启组件扫描,即自动扫描包路径下的@Component注解将bean实例注册到语境。@ComponentScan(basePackages={"com.pack.a","com.jack.b"})publicclassSqlSessionFactoryConfig{}@Conditional这是Spring4.0新增的注解,用于标识一个SpringBean或Configuration配置文件,当满足指定条件时才启用配置。@Bean@Conditional({SEECoditional.class})publicServerEndpointExporterserverEndpointExporter(){returnnewServerEndpointExporter();}publicclassSEECoditionalimplementsCondition{@Overridepublicbooleanmatches(ConditionContextcontext,AnnotatedTypeMetadatametadata){Stringactive=context.getProtive)peract(".appurn.getEnvironment(")!"prod".equals(active);}}@ConditionalOnBean只有当容器中有指定的bean时才会启用配置@ConditionalOnMissingBean当容器中没有指定的bean时才启用配置。@ConditionalOnMissingBean({DataSource.class,XADataSource.class})protectedstaticclassEmbeddedConfiguration{}@ConditionalOnClass结合@Conditional注解,只有当容器中有指定的Class时才启用配置。@ConditionalOnClass({RabbitTemplate.class,Channel.class})publicclassRabbitAutoConfiguration{}@ConditionalOnMissingClass当容器中没有指定的Class时,开启配置。@ConditionalOnWebApplication仅当当前项目类型为WEB项目时才启用该配置。当前项目有以下3种类型。/***Anywebapplicationwillmatch.*/ANY,/***Onlyservlet-basedwebapplicationwillmatch.*/SERVLET,/***Onlyreactive-basedwebapplicationwillmatch.*/REACTIVE@ConditionalOnNotWebApplication当前项目类型不是WEB项目开启配置。@ConditionalOnProperty仅当指定属性具有指定值时才启用配置。@Bean@ConditionalOnProperty(prefix="spring.rabbitmq",name="dynamic",matchIfMissing=true)publicAmqpAdminamqpAdmin(ConnectionFactoryconnectionFactory){returnnewRabbitAdmin(connectionFactory);}@ConditionalOnExpression仅在SpEL表达式为真时打开配置。@ConditionalOnJava仅当运行的JavaJVM在指定的版本范围内时才启用该配置。@ConditionalOnResource当类路径中有指定资源时,启用配置。@ConditionalOnJndi只有当指定的JNDI存在时才打开配置。@ConditionalOnSingleCandidate仅当指定的类在容器中只有一个Bean,或者同时有多个但首选时才启用该配置。@ConfigurationProperties用于加载额外的配置(比如.properties文件),可以用在@Configuration注解类或者@Bean注解方法上。@Bean@ConfigurationProperties(prefix=DataSourceProperties.PREFIX)publicDataSourcedataSource(){DataSourceBuilderfactory=DataSourceBuilder.create(this.properties.getClassLoader()).driverClassName(this.properties.getDriverClassName()).url(this.properties.getUrl()).username(this.properties.getUsername()).password(this.properties.getPassword());if(this.properties.getType()!=null){factory.type(this.properties.getType());}returnfactory.build();}@EnableConfigurationProperties与@ConfigurationProperties注释一起使用以启用对@ConfigurationProperties注释配置bean的支持。@Configuration@ConditionalOnClass({DataSource.class,EmbeddedDatabaseType.class})@EnableConfigurationProperties(DataSourceProperties.class)publicclassDataSourceAutoConfiguration{}@AutoConfigureAfter用在自动配置类上,表示自动配置类需要在其他指定的自动之后配置配置类已配置。比如Mybatis的自动配置类需要在数据源自动配置类之后。@AutoConfigureAfter({DataSourceAutoConfiguration.class,MybatisLanguageDriverAutoConfiguration.class})publicclassMybatisAutoConfigurationimplementsInitializingBean{}@AutoConfigureBefore表示该自动配置类需要在另一个指定的自动配置类之前配置。@Import这是Spring3.0新增的一个注解,用于导入一个或多个用@Configuration注解修饰的类,在SpringBoot中应用较多。@Import(CachingConfigurationSelector.class)public@interfaceEnableCaching{}@ImportResource这是Spring3.0新增的一个注解,用于导入一个或多个Spring配置文件,对于SpringBoot兼容旧项目非常有用,因为有些配置无法通过通过JavaConfiguration形式的Config只能用这个注解导入。@ImportResource({"classpath:spring/application-*.xml"})@SpringBootApplicationpublicclassAppApplication{}@RestController这个注解是@ResponseBody+@Controller的组合。返回的内容为返回的内容,不能返回jsp或html页面等视图文件。@RestController@RequestMapping("/users")publicclassUsersController{}@RequestMapping映射请求路径。@GetMapping映射获取请求@PostMapping映射post请求@PatchMapping映射方法是对patch的请求。一般用于个别属性的修改操作@PutMapping新建资源或者替换请求加载的目标资源的表示。Put是幂等的,POST不是@DeleteMapping删除资源@RequestBody表示接口参数接受请求的body内容。@PathVariable接受请求路径中占位符的值。
