# srping boot 注解

# spring web mvc注解

@RequestMapping 用途:将web请求与请求处理类中的方法进行映射 Spring MVC和Spring WebFlux都通过RequestMappingHandlerMapping和RequestMappingHandlerAdapter两个类来对@RequestMapping注解的支持 属性: value:映射请求的url或者别名 method:http方法名 params:根据http参数的存在,缺省或值对请求进行过滤 header:根据http header的存在,缺省或值对进行过滤 consume:设定在http请求正文中允许使用的媒体类型 product:在http响应体中允许使用的媒体类型

@RequestBody 用途:它可以将请求主体中的参数绑定到一个对象中,请求主体参数 是通过HttpMessageConverter传递,根据请求主体中的参数名与对象的 属性名进行匹配并绑定值。@Valid注解对请求主体中的参数进行校验。

@GetMapping 组合注解相当于@RequestMapping(method=RequestMethod.GET)

@PostMapping 组合注解相当于@RequestMapping(method=HttpMethod.POST)

@PutMapping/@DeleteMapping/@PatchMapping

@ControllerAdvice--新增 用途:全局异常处理需要搭配@ExceptionHandler,全局数据绑定@InitBinder @ModelAttribute配置与视图相关的参数

@ResponseBody 会自动将控制器中的方法的返回值写入到http响应中 @RestController=@Controller+@ResponseBody

@ExceptionHandler 标注请求的方法

@PathVariable 将方法中的参数绑定到请求URI中的模板变量上

@RequestParam注解用于将方法的参数与web请求的传递的参数进行绑定 该注解的其他属性配置与@PathVariable的配置相同。还可以通过defaultValue设置一个默认值

@Controller 是@Component注解的一个延伸,Spring会自动扫描并配置被该注解标注的类。此注解用于标注Spring MVC的控制器。

@RestController 注解相当于@Controller和@ResponseBody的快捷方式

@ModelAttribute 可以通过模型索引名称来访问存在于控制器中的model

@CrossOrigin @CrossOrigin注解将为请求处理类或请求处理方法提供跨域调用支持。

@InitBinder 用于在@Controller中标注于方法上,表示为当前控制器注册一个属性编辑器,只对当前的Controller有效。 常见用途:可以处理请求中。将时间转换为Data再绑定。也可以字符串去空格

# spring bean注解

@ComponentScan 注解用于配置Spring需要扫描的被组件注解注释的类所在的包

@Component 注解用于标注一个普通的组件类

@Service 注解是@Component的一个延伸(特例),它用于标注业务逻辑类

@Repository 注解也是@Component注解的延伸,与@Component注解一样,被此注解标注的类会被Spring自动管理起来,@Repository注解用于标注DAO层的数据持久化类

# spring dependency inject与bean scops注解

@DependsOn 解可以配置Spring IoC容器在初始化一个Bean之前,先初始化其他的Bean对象

@Bean @Bean注解主要的作用是告知Spring,被此注解所标注的类将需要纳入到Bean管理工厂中。

@Scope 注解可以用来定义@Component标注的类的作用范围以及@Bean所标记的类的作用范围 singleton,prototype,request,session,globalsession spring默认scope是单列模式,这样只会创建一个action对象。struts2是要求每次访问不同的action

singleton:单例
SpringIOC容器只会创建该bean定义的唯一实例
当一个bean的 作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把 一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都 将返回被缓存的对象实例,这里要注意的是singleton作用域和GOF设计模式中的单例是完全不同的,单例设计模式表示一个ClassLoader中 只有一个class存在,而这里的singleton则表示一个容器对应一个bean,也就是说当一个bean被标识为singleton时 候,spring的IOC容器中只会存在一个该bean。
1
2
3
prototype:原型
每次请求会产生一个新的bean实例(getBean()),相当于一个new操作
prototype作用域部署的bean,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的 getBean()方法)都会产生一个新的bean实例,相当与一个new的操作,对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。 清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责。(让Spring容器释放被singleton作用域bean占用资源的一种可行方式是,通过使用 bean的后置处理器,该处理器持有要被清除的bean的引用。)
1
2
3
request:请求
request表示该针对每一次http请求都会产生一个新的bean,同时该bean仅在当前http request有效
1
2
session:会话
session作用域表示该针对每一次http请求都会产生一个新的bean,同时该bean仅在当前http session有效
1
2
globalsession:全局会话
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。
1
2

# 容器配置注解

@Autowired 注解用于标记Spring将要解析和注入的依赖项。此注解可以作用在构造函数,字段和setter方法上

@Primary 当系统中需要配置多个具有相同类型的bean时,@Primary可以定义这些Bean的优先级。

@PostConstruct 注解用于标注在Bean被Spring初始化之前需要执行的方法

@PreDestroy 注解用于标注Bean被销毁前需要执行的方法

@Qualifier(当有多个实现类,自动注解到接口上时候,就需要明确指出是那个service) 当系统中存在同一类型的多个Bean时,@Autowired在进行依赖注入的时候就不知道该选择哪一个实现类进行注入。此时,我们可以使用@Qualifier注解来微调,帮助@Autowired选择正确的依赖项。

# spring boot注解

@SpringBootApplication 解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个Bean,并自动触发自动配置Bean和自动扫描组件。此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合

@EnableAutoConfiguration 注解用于通知Spring,根据当前类路径下引入的依赖包,自动配置与这些依赖包相关的配置项。

@ConditionalOnClass与@ConditionalOnMissingClass 这两个注解属于类条件注解,它们根据是否存在某个类作为判断依据来决定是否要执行某些配

@ConditionalOnProperty 注解会根据Spring配置文件中的配置项是否满足配置要求,从而决定是否要执行被其标注的方法

@ConditionalOnResource 此注解用于检测当某个配置文件存在使,则触发被其标注的方法

@ConditionalOnWebApplication与@ConditionalOnNotWebApplication 注解用于判断当前的应用程序是否是Web应用程序。如果当前应用是Web应用程序,则使用Spring WebApplicationContext,并定义其会话的生命周期

@ConditionalExpression 注解可以让我们控制更细粒度的基于表达式的配置条件限制。当表达式满足某个条件或者表达式为真的时候,将会执行被此注解标注的方法。

@Conditional 在Spring内置的条件控制注解不满足应用需求的时候,可以使用此注解定义自定义的控制条件,以达到自定义的要求

全量分析

评 论:

上次更新时间: 12/12/2019, 2:39:58 PM