@SpringBootApplication
这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。
实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。
@Configuration
代表是一个配置类
@ComponentScan
指定包扫描
@EnableAutoConfiguration
该注解是由下面两个组合
@AutoConfigurationPackage
自动配置包,利用Registrar.class给容器中导入一系列组件(获取当前类所在的包,然后加载包里面所有的组件)
@Import(AutoConfigurationImportSelector.class)
加载127个自动配置类(这些配置类会按需配置,只有满足条件才生效,生效的配置类会给容器装配许多组件)
@Controller
@Controller表示在tomcat启动的时候,把这个类作为一个控制器加载到Spring的Bean工厂,并且对其实例化(new)。如果不加,就是一个普通的类,和Spring没有半毛钱关系。
@RestController(结合GetMapper,PostMapper,PutMapper....使用)
RestController = Controller + ResponseBody
Controller 返回的是页面
RestController 返回的是输出结果,如json,是提供前端获取数据,提交数据
@RequestMapping
RequestMapping就是一个映射路径。
(如果在同一个Controller里面设置两个相同的RequestMapping,编译可以通过但是tomcat启动后会报错,系统无法进行映射)
根据它们处理的request的不同内容可以分为四类(常用的类型)。
第一类:处理request body部分的注解有:@RequestParam和@RequestBody
第二类:处理requet uri部分的注解有:@PathVaribale
第三类:处理request header部分的注解有:@RequestHeader和@CookieValue
第四类:处理attribute类型的注解有:@SessionAttributes和@MoelAttribute
@ResponseBody的作用
在Controller里面,@ResponseBody就是说明这个方法返回的东西会通过IO流的方式写入到浏览器
@Service,@Component
bean注册
@Autowired,@Resource ,@Autowired+@Qualifier
获取bean
@Resource = @Autowired+@Qualifier
如果接口实现只有一个,直接用,不需要指定名字
如果有多个,建议用@Resource(name = "”) 并指定name(推荐)
也可以用@Autowired+@Qualifier("value") 并指定value值
@Values
从配置文件中取参数
@Configuration + @Bean -->SpringBoot启动会自动注册组件,默认单实例
给类标准@configuration 标注这是一个配置类 (相当于配置文件)
给方法名@Bean 将该方法标注为组件,id为方法名,返回值就是容器中的实例
(@configuration(proxyBeanMethods = ture)默认 代理对象,使组件单实例
当多次调用配置类中的组件(bean),获取的组件都是相等的
Full(当参数为true) 每次调用返回容器中的组件,启动时会去检测容器是否存在组件 (全模式)
Lite(当参数为false) 每次调用都会返回新的组件, 启动时不会去检测容器中是否存在组件(轻量级模式)
@ConfigurationProperties
在实体类中标注 @ConfigurationProperties(prefix="mycat ")
使配置文件和属性一一绑定
配置文件
mycat.brand = 比亚迪
mycat.price = 100000
实体类
private String brand;
private String price;
不过还 需要加@component,把类设置为容器中的组件
因为只有是容器中的组件才能使用该springBoot注解
@Import
给类标注@Import(User.class);
容器自动创建该类型组件,默认名称是全类名(com.**.user)
@ImportResource
在任意一个类上标注 @ImportResource("xxxx.xml") 导入Spring配置文件
@Conditional
@ConditionalOnBean 但存在某个Bean时干什么
@ConditionalOnMissingBean 但不存在某个Bean时干什么
@ConditionalOnProperty 存在某个配置的时候生效
....
@ConditionalOnBean(name=" " 或 type=" " 或 value=" ") 可以写类名或类型