前言
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
SpringBoot被认为是SpringMVC的“接班人”,它可以帮我们自动配置,如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用自己的配置。另外,SpringBoot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序。
1、
Conditional可以控制更为复杂的配置条件。在Spring内置的条件控制注解不满足应用需求的时候,可以使用此注解定义自定义的控制条件,以达到自定义的要求。
示例:
Conditioanl(CustomConditioanl.class)CustomPropertiesaddCustomProperties(){//...}/2、
2、
ConditionalOnResource用于检测当某个配置文件存在使,则触发被其标注的方法,下面是使用此注解的代码
示例:
ConditionalOnResource(resources="classpath:website.properties")PropertiesaddWebsiteProperties(){//...}
3、
ConditionalOnClass与ConditionalOnMissingClass这两个注解属于类条件注解,它们根据是否存在某个类作为判断依据来决定是否要执行某些配置。
示例:
Configuration
ConditionalOnClass(DataSource.class)classMySQLAutoConfiguration{//...}4、
SpringBootApplication注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个Bean,并自动触发自动配置Bean和自动扫描组件。此注解相当于
Configuration、EnableAutoConfiguration和ComponentScan的组合。在SpringBoot应用程序的主类中,就使用了此注解。
示例:
SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}
5、
AutowiredAutowired注解用于标记Spring将要解析和注入的依赖项。此注解可以作用在构造函数、字段和setter方法上,作用于构造函数
示例:
RestControllerpublicclassuserController{ privateUserServiceuserService;
Autowired UserController(userServiceuserService){ this.userService=userservice; }}6、
Primary当系统中需要配置多个具有相同类型的bean时,
Primary可以定义这些Bean的优先级。示例:
7、Scops注解
Scope注解可以用来定义
Component标注的类的作用范围以及Bean所标记的类的作用范围。Scope所限定的作用范围有:singleton、prototype、request、session、globalSession或者其他的自定义范围。这里以prototype为例子进行讲解。当一个SpringBean被声明为prototype(原型模式)时,在每次需要使用到该类的时候,SpringIoC容器都会初始化一个新的改类的实例。在定义一个Bean时,可以设置Bean的scope属性为
prototype:scope=“prototype”
也可以使用
Scope注解设置Scope(value=ConfigurableBeanFactory.SCOPE_PROPTOTYPE)
两种不同的方式来使用
Scope注解,示例:8、
RequestBody在处理请求方法的参数列表中使用,它可以将请求主体中的参数绑定到一个对象中,请求主体参数是通过HttpMessageConverter传递的,根据请求主体中的参数名与对象的属性名进行匹配并绑定值。此外,还可以通过
Valid注解对请求主体中的参数进行校验。示例:
9、
PostMappingPostMapping注解用于处理HTTPPOST请求,并将请求映射到具体的处理方法中。
PostMapping与GetMapping一样,也是一个组合注解,它相当于是RequestMapping(method=HttpMethod.POST)的快捷方式。10、
DeleteMappingDeleteMapping注解用于处理HTTPDELETE请求,并将请求映射到删除方法中。
DeleteMapping是一个组合注解,它相当于是RequestMapping(method=HttpMethod.DELETE)的快捷方式。示例:
11、
ResponseBodyResponseBody会自动将控制器中方法的返回值写入到HTTP响应中。特别的,
ResponseBody注解只能用在被Controller注解标记的类中。如果在被RestController标记的类中,则方法不需要使用ResponseBody注解进行标注。RestController相当于是Controller和ResponseBody的组合注解。示例:
12、
ResponseStatus注解可以标注请求处理方法。使用此注解,可以指定响应所需要的HTTPSTATUS。特别地,我们可以使用HttpStauts类对该注解的value属性进行赋值。
示例:
13、
RequestParam注解用于将方法的参数与Web请求的传递的参数进行绑定。使用
RequestParam可以轻松的访问HTTP请求参数的值。示例:
14、
Controller是
Component注解的一个延伸,会自动扫描并配置被该注解标注的类。此注解用于标注SpringMVC的控制器。示例:
15、
ModelAttribute可以通过模型索引名称来访问已经存在于控制器中的model
示例:
与
PathVariable和RequestParam注解一样,如果参数名与模型具有相同的名字,则不必指定索引名称,简写示例如下:如果使用
ModelAttribute对方法进行标注,Spring会将方法的返回值绑定到具体的Model上示例:
在Spring调用具体的处理方法之前,被
ModelAttribute注解标注的所有方法都将被执行。16、
Component注解用于标注一个普通的组件类,它没有明确的业务范围,只是通知Spring被此注解的类需要被纳入到SpringBean容器中并进行管理。
示例:
17、
Repository是
Component注解的延伸,与Component注解一样,被此注解标注的类会被Spring自动管理起来,Repository注解用于标注DAO层的数据持久化类。示例:
18、
DependsOn可以配置SpringIoC容器在初始化一个Bean之前,先初始化其他的Bean对象
示例:
Springboot返回json数据
在做如下操作之前,我们对之前的Hello进行简单的修改,我们新建一个包