一、启动
@SpringBootApplication
@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 @interface SpringBootApplication {
}
@SpringBootApplication包含了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解
@SpringBootConfiguration
SpringBootConfiguration 是 SpringBoot 项目的配置注解,也是一个组合注解,标注当前类是配置类, 并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
@AliasFor(annotation = Configuration.class)
boolean proxyBeanMethods() default true;
}
SpringBootConfiguration 注解上使用了 @Configuration 注解。因此 @SpringBootConfiguration 可以替代 @Configuration 注解。
@EnableAutoConfiguration
@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。
借助于Spring框架原有的工具类SpringFactoriesLoader的支持,@EnableAutoConfiguration可以智能的自动配置
@ComponentScan
@ComponentScan的功能其实就是自动扫描并加载符合条件的组件或bean定义,最终将这些bean定义加载到容器中。我们可以通过basePackages等属性指定@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现从声明@ComponentScan所在类的package进行扫描,默认情况下是不指定的,所以SpringBoot的启动类最好放在root package下。
二、Controller
@Controller
控制器,处理http请求。
@RestController 复合注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
/**
* The value may indicate a suggestion for a logical component name,
* to be turned into a Spring bean in case of an autodetected component.
* @return the suggested component name, if any (or empty String otherwise)
* @since 4.0.1
*/
@AliasFor(annotation = Controller.class)
String value() default "";
}
@RestController源码,相当于@ResponseBody+@Controller合在一起的作用,RestController使用的效果是将方法返回的对象直接在浏览器上展示成json格式.
@RequestBody
通过HttpMessageConverter读取Request Body并反序列化为Object对象
@RequestMapping
@RequestMapping ,将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上
@GetMapping
@GetMapping 用于将HTTP get请求映射到特定处理程序的方法注解
@PostMapping
@PostMapping 用于将HTTP post请求映射到特定处理程序的方法注解
三、与bean相关的注解
@Repository
DAO层注解
@Service
@Service是@Component注解的一个特例,作用在类上,作用域默认为单例,使用注解配置和类路径扫描时,被@Service注解标注的类会被Spring扫描并注册为Bean,@Service使用时没有传参数,Bean名称默认为当前类的类名,首字母小写,@Service(“BeanId”)或@Service(value=”BeanId”),在使用时传参数,将使用value作为Bean名字。
@Scope
@Scope作用在类上和方法上,用来配置 spring bean 的作用域。
@Bean
产生一个bean的方法,并且交给Spring容器管理,支持别名@Bean("xx-name")。
@Autowired 自动导入
作用在构造函数、方法、方法参数、类字段以及注解上,
@Autowired注解可以实现Bean的自动注入。
@Component
把普通pojo实例化到spring容器中,@Component就是告诉spring,我是pojo类,然后spring会自动提取相关信息。就不用写xml配置文件了。