SpringBoot 注解和核心类
SpringBoot常用注解
@SpringBootApplication :应用启动类注解,申明springboot自动给程序进行必要配置;这个注解等同于 @Configuration ,@EnableAutoConfiguration 和 @ComponentScan
@EnableAutoConfiguration : SpringBoot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用 ;
@ComponentScan : 表示将该类自动发现扫描组件 ;扫描带有 @Component、@Controller、@Service 、@Repository 等这些注解的类,包括@Configuration类 ,并注册为Spring容器管理的Bean; @Autowired注解导入 的Bean就来自于此处的扫描;
**@Bean:**相当于XML中的标签,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
**@Value:**加在参数上,注入Spring boot application.properties配置的属性的值 。
@Component、@Controller、@Service 、@Repository: 放在类上,将此类对象交给spring容器管理,实质都是一样,只是根据类的分工不同,命名上有区别
@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射
@ResponseBody :方法级注解,表明方法的返回值写入http的response body中, 一般在异步获取数据时使用,用于构建RESTful的api ;@RequestMapping注解的方法默认将返回值当作路由信息,进行路径跳转;加上@ResponseBody之后,方法返回值不会解析成跳转路径,回直接被解析为JSON字符串返回请求方,此方法一般配合@RequestMapping注解一起
@RestController :类注解,等同于@Controller和@ResponseBody得效果
@Configuration : 相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。 此类一般用来生成框架运行所需的Bean对象,也可以对产生的Bean对象进行自定义,比如配置shiro的配置,restTemplate的Bean对象;
**@Import:**用来导入其他配置类。
**@ImportResource:**用来加载xml配置文件。
**@Autowired:**自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。
**@Qualifier:**当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,具体使用方式如下:
SpringCloud常用注解
Eureka 微服务注册与发现
@EnableEurekaServer: 启动类上,申明此boot应用为一个eureka服务中心
**@EnableEurekaClient:**启动类上,申明此boot项目作为微服务,将被注册到eurekaServer
@EnableDiscoveryClient : 启动类上,申明此boot项目作为微服务,能被调用方发现
Ribbon & Feign 服务调用与负载均衡
@LoadBalanced: 加在配置类的返回RestTemplate Bean的方法上,开启Ribbon负载均衡 ,代表RestTemplate在发起请求时,将按一定负载规则来选用eureka服务中心可用的微服务,即为客户端的负载均衡
@EnableFeignClients: 一般配置在调用微服务的应用的启动类上,Feign类似于对RestTemplate请求java开发的一种优化,使得客户端对微服务的调用更像原先单体项目的Service调用,java开发社区的一种优化,其本质还是用的Ribbon负载均衡的RestTemplate来调用微服务
@FeignClient(value = “service-privider”, fallback = UserFeignClientFallback.class, configuration = FeignConfig.class): 加在API工程的接口类上,指定该类的方法访问的微服务应用的id;在这个接口类中,用@GetMapping("/dept/get/{id}");@PostMapping("/dept/add")等注解来指定调用的微服务url
Hystrix 短路器,服务的熔断与降级
**@EnableCircuitBreaker:**对hystrix熔断的支持,加在微服务的提供应用的启动类上
@HystrixCommand(fallbackMethod = “hystrixGet”):用来做服务熔断,微服务的提供者应用,在方法上加的注解,加上注解的方法会被Hystrix会监控微服务间调用的状况,当失败的调用到一定阀值缺省是5秒内20次调用失败,就会启动熔断机制,请求将不走此方法而访问此类中的异常处理方法hystrixGet;快速失败后,能够根据一定的算法动态试探所依赖对象是否恢复,在重启此方法;
@FeignClient(value = “SPRINGCLOUD-PROVIDER-DEPT”,fallbackFactory = FallBackFactory.class):用来做服务降级,旨在高并发的情况下,不访问指定id的微服务,去访问一个实现了FallbackFactory的子类,用此类的方法,来做虚拟的返回结果,减小微服务服务器的压力;FallbackFactory要实现一个create*方法,此方法要返回一个API接口类的子类