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="參數具體描述")