EnableZuulServer && @EnableZuulProxy @EnableZuulProxy 理解为 @EnableZuulServer的加强版,当Zuul与Eureka,Ribbon等组件配合使用时,咱们使用 @EnableZuulProxyspring
一. @EnableZuulServer过滤器 一、pre类型过滤器 (1) ServletDetectionFilter:用于检查请求是否经过Spring Dispatcher,检查后经过isDispatcherServletRequest设置布尔值。 (2) FormBodyWrapperFilter:解析表单数据,并为请求从新编码。 (3) DebugFilter:顾名思义,调试用的过滤器,能够经过zuul.debug.request=true,或在请求时,加上debug=true的参数,例如$ZUUL_HOST:ZUUL_PORT/path?debug=true开启该过滤器。这样,该过滤器就会把RequestContext.setDebugRouting()、RequestContext.setDebugRequest()设为true。数据库
二、route类型过滤器 SendForwardFilter:该过滤器使用Servlet RequestDispatcher转发请求,转发位置存储在RequestContext.getCurrentContext().get("forward.to")中。能够将路由设置成: zuul: routes: abc:
path: /abc/** url: forward:/abc 而后访问$ZUUL_HOST:ZUUL_PORT/abc,观察该过滤器的执行过程。json
三、post类型过滤器 SendResponseFilter:将Zuul所代理的微服务的响应写入当前响应。后端
四、error类型过滤器 SendErrorFilter:若是RequestContext.getThrowable()不为null,那么默认就会转发到/error,也能够设置error.path属性修改默认的转发路径tomcat
二. @EnableZuulProxy过滤器 若是使用注解@EnableZuulProxy,那么除上述过滤器以外,Spring Cloud还会增长如下过滤器:多线程
一、pre类型过滤器 PreDecorationFilter:该过滤器根据提供的RouteLocator肯定路由到的地址,以及怎样去路由。该路由器也可为后端请求设置各类代理相关的header。app
二、route类型过滤器负载均衡
(1) RibbonRoutingFilter:该过滤器使用Ribbon,Hystrix和可插拔的HTTP客户端发送请求。serviceId在RequestContext.getCurrentContext().get("serviceId")中。该过滤器可以使用不一样的HTTP客户端,例如 Apache HttpClient:默认的HTTP客户端 SquareupOkHttpClient v3:如需使用该客户端,需保证com.squareup.okhttp3的依赖在classpath中,并设置ribbon.okhttp.enabled = true。 Netflix Ribbon HTTP client:设置ribbon.restclient.enabled = true便可启用该HTTP客户端。须要注意的是,该客户端有必定限制,例如不支持PATCH方法,另外,它有内置的重试机制。框架
(2) SimpleHostRoutingFilter:该过滤器经过Apache HttpClient向指定的URL发送请求。URL在RequestContext.getRouteHost()中。异步
springMVC @Controller, @RestController 若是有返回到具体的页面,使用 @Controller,若是要返回string或者json类型的数据,就要使用 @RestController @RestController = @Controller + @ResponseBody , 能够在类注解上使用 @Controller,在具体的额方法上使用 @ResponseBody
@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。 @Configuration的注解类标识这个类可使用Spring IoC容器做为bean定义的来源。@Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象应该被注册为在Spring应用程序上下文中的bean。 @EnableAutoConfiguration:可以自动配置spring的上下文,试图猜想和配置你想要的bean类,一般会自动根据你的类路径和你的bean定义自动配置。 @ComponentScan:会自动扫描指定包下的所有标有@Component的类,并注册成bean,固然包括@Component下的子注解@Service,@Repository,@Controller
@EnableDiscoveryClient, @EnableEurekaClient springCloud的Discovery Service有多种实现:eureka,consul,zookeeper
若是你的classpath中添加了eureka,则他们的做用是同样的 @EnableEurekaClient: 该注解代表应用既做为eureka实例又为eureka client 能够发现注册的服务 @EnableEurekaServer: 该注解代表应用为eureka服务,有能够联合多个服务做为集群,对外提供服务注册以及发现功能
eureka为netflix开源软件,分为三个部分: eureka服务:用以提供服务注册、发现,已一个war的形式提供 http://search.maven.org/#search%7Cga%7C1%7Ceureka-server 或者编译源码,将war拷贝进tomcat便可提供服务 eureka-server: 相对client端的服务端,为客户端提供服务,一般状况下为一个集群 eureka-client:客户端,经过向eureka服务发现注册的可用的eureka-server,向后端发送请求
@EnableTransactionManagement spring Boot使用事务很是简单,首先使用 @EnableTransactionManagement开启事务支持后,而后在访问数据库的Service方法上添加 @Transactional便可 JPA和JDBC都实现自PlatformTransactionManager spring-boot-starter-jdbc , 框架会默认注入 DataSourceTransactionManager实例 spring-boot-start-jpa, 框架会默认注入 JpaTransactionManager实例
@EnableAsync EnableAsync注解的意思是支持异步执行,就是开启多线程的意思。能够标注在方法,类上 在方法上,须要标注 @Async 异步调用 为了让方法上的 @Async生效,还须要在Spring Boot的主程序中配置 @EnableAsync 注 @Async所修饰的函数,不要定义为static函数,这样异步调用不会生效
@EnableFeignClients Feign是一个声明式的WebService客户端,使用Feign能让编写WebService客户端更加简单 它的使用方法是定义一个接口,而后在接口上添加注解,同时也支持JAX-RS标准的注解, Feign也支持可插拔式的编码器和解码器,Spring Cloud对Feign进行了封装,使其支持 SpringMVC标准注解和HttpMessageConverters.Feign能够和Eureka,Ribbon一块儿使用,支持负载均衡
@ServletComponentScan 在spring boot中添加本身的Servlet有两种方法,代码注册Servlet和注解自动注册(Filter和Listener也是如此)。
1、代码注册经过ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 得到控制。 也能够经过实现 ServletContextInitializer 接口直接注册。
2、在 SpringBootApplication 上使用@ServletComponentScan 注解后,Servlet、Filter、Listener 能够直接经过 @WebServlet、@WebFilter、@WebListener 注解自动注册,无需其余代码。
@ApiOperation @ApiOperation不是spring的注解,而是swagger里的 com.wordnik.swagger.annotations.ApiOperation; @ApiOperation 和 @ApiParam为添加API相关的注解,参数说明以下: @ApiOperation(value="接口说明",httpMethod="接口请求方式",response="接口返回参数类型",notes="接口发布说明") @ApiParam(required="是否必须参数",name="参数名称",value="参数具体描述")