1*a24ffb47SSadaf Ebrahimi# OpenCensus Spring Starter 2*a24ffb47SSadaf Ebrahimi[![Build Status][travis-image]][travis-url] 3*a24ffb47SSadaf Ebrahimi[![Windows Build Status][appveyor-image]][appveyor-url] 4*a24ffb47SSadaf Ebrahimi[![Maven Central][maven-image]][maven-url] 5*a24ffb47SSadaf Ebrahimi 6*a24ffb47SSadaf EbrahimiThe *OpenCensus Spring Starter for Java* is a starter package that includes 7*a24ffb47SSadaf Ebrahimipackages required to enable tracing using opencensus when working with [Spring Web][spring-web-url]. 8*a24ffb47SSadaf Ebrahimi 9*a24ffb47SSadaf EbrahimiThis version is compatible with [Spring Boot 2.0][spring-boot-2.0-url]. 10*a24ffb47SSadaf Ebrahimi 11*a24ffb47SSadaf Ebrahimi## Servlet and AsyncRestTemplate Tracing 12*a24ffb47SSadaf Ebrahimi 13*a24ffb47SSadaf EbrahimiEnable tracing on RestController (server side) and AysncRestTemplate (client side) by simply including opencensus-contrib-spring-starter in your dependencies and 14*a24ffb47SSadaf Ebrahimiinitializing exporter. It automatically traces your http request and collects stats associated with the 15*a24ffb47SSadaf Ebrahimirequest. 16*a24ffb47SSadaf Ebrahimi 17*a24ffb47SSadaf EbrahimiIt does require to register exporter and views. 18*a24ffb47SSadaf Ebrahimi 19*a24ffb47SSadaf Ebrahimi### Depedencies 20*a24ffb47SSadaf Ebrahimi 21*a24ffb47SSadaf Ebrahimi#### Maven 22*a24ffb47SSadaf Ebrahimi 23*a24ffb47SSadaf Ebrahimi```xml 24*a24ffb47SSadaf Ebrahimi<dependencies> 25*a24ffb47SSadaf Ebrahimi <dependency> 26*a24ffb47SSadaf Ebrahimi <groupId>io.opencensus</groupId> 27*a24ffb47SSadaf Ebrahimi <artifactId>opencensus-contrib-spring-starter</artifactId> 28*a24ffb47SSadaf Ebrahimi <version>0.23.0</version> 29*a24ffb47SSadaf Ebrahimi </dependency> 30*a24ffb47SSadaf Ebrahimi</dependencies> 31*a24ffb47SSadaf Ebrahimi 32*a24ffb47SSadaf Ebrahimi``` 33*a24ffb47SSadaf Ebrahimi 34*a24ffb47SSadaf Ebrahimi#### Gradle 35*a24ffb47SSadaf Ebrahimi```gradle 36*a24ffb47SSadaf EbrahimidependencyManagement { 37*a24ffb47SSadaf Ebrahimi imports { 38*a24ffb47SSadaf Ebrahimi mavenBom "io.opencensus:opencensus-contrib-spring-starter:0.23.0" 39*a24ffb47SSadaf Ebrahimi } 40*a24ffb47SSadaf Ebrahimi} 41*a24ffb47SSadaf Ebrahimidependencies { 42*a24ffb47SSadaf Ebrahimi compile 'io.opencensus:opencensus-contrib-spring:0.23.0' 43*a24ffb47SSadaf Ebrahimi} 44*a24ffb47SSadaf Ebrahimi``` 45*a24ffb47SSadaf Ebrahimi 46*a24ffb47SSadaf Ebrahimi### Tracing Properties 47*a24ffb47SSadaf Ebrahimi 48*a24ffb47SSadaf EbrahimiOptionally configure one or more Tracing Properties in application.properties file. 49*a24ffb47SSadaf Ebrahimi 50*a24ffb47SSadaf Ebrahimi 51*a24ffb47SSadaf Ebrahimi#### PublicEndpoint 52*a24ffb47SSadaf Ebrahimi 53*a24ffb47SSadaf EbrahimiIf a servlet is serving publicEndpoints (untrusted boundary) then set this property to `true`. 54*a24ffb47SSadaf EbrahimiWhen set to true incoming trace context is added as a parent link instead of as a parent. 55*a24ffb47SSadaf EbrahimiBy default it is set to `false`. When set to `false` it uses incoming trace context as a parent. 56*a24ffb47SSadaf Ebrahimi 57*a24ffb47SSadaf Ebrahimi``` 58*a24ffb47SSadaf Ebrahimiopencensus.spring.trace.publicEndpoint = true 59*a24ffb47SSadaf Ebrahimi``` 60*a24ffb47SSadaf Ebrahimi 61*a24ffb47SSadaf Ebrahimi#### Propagation 62*a24ffb47SSadaf Ebrahimi 63*a24ffb47SSadaf Ebrahimiopencensus.spring.trace.propagation = TRACE_PROPAGATION_B3 64*a24ffb47SSadaf Ebrahimi 65*a24ffb47SSadaf EbrahimiBy default it is set to TRACE_PROPAGATION_TRACE_CONTEXT which uses [W3C Tracecontext](https://github.com/census-instrumentation/opencensus-java/blob/master/api/src/main/java/io/opencensus/trace/propagation/TextFormat.java) 66*a24ffb47SSadaf Ebrahimipropagator to propagate trace context. To use [B3 format](https://github.com/census-instrumentation/opencensus-java/blob/master/impl_core/src/main/java/io/opencensus/implcore/trace/propagation/B3Format.java) 67*a24ffb47SSadaf Ebrahimiset the property to TRACE_PROPAGATION_B3 68*a24ffb47SSadaf Ebrahimi 69*a24ffb47SSadaf Ebrahimi``` 70*a24ffb47SSadaf Ebrahimiopencensus.spring.trace.propagation = TRACE_PROPAGATION_B3 71*a24ffb47SSadaf Ebrahimi``` 72*a24ffb47SSadaf Ebrahimi 73*a24ffb47SSadaf Ebrahimi#### Java Versions 74*a24ffb47SSadaf Ebrahimi 75*a24ffb47SSadaf EbrahimiJava 6 or above is required for using this artifact. 76*a24ffb47SSadaf Ebrahimi 77*a24ffb47SSadaf Ebrahimi[travis-image]: https://travis-ci.org/census-instrumentation/opencensus-java.svg?branch=master 78*a24ffb47SSadaf Ebrahimi[travis-url]: https://travis-ci.org/census-instrumentation/opencensus-java 79*a24ffb47SSadaf Ebrahimi[appveyor-image]: https://ci.appveyor.com/api/projects/status/hxthmpkxar4jq4be/branch/master?svg=true 80*a24ffb47SSadaf Ebrahimi[appveyor-url]: https://ci.appveyor.com/project/opencensusjavateam/opencensus-java/branch/master 81*a24ffb47SSadaf Ebrahimi[maven-image]: https://maven-badges.herokuapp.com/maven-central/io.opencensus/opencensus-contrib-spring-starter/badge.svg 82*a24ffb47SSadaf Ebrahimi[maven-url]: https://maven-badges.herokuapp.com/maven-central/io.opencensus/opencensus-contrib-spring-starter 83*a24ffb47SSadaf Ebrahimi[spring-boot-2.0-url]: https://github.com/spring-projects/spring-boot/tree/2.0.x 84*a24ffb47SSadaf Ebrahimi[spring-web-url]: https://github.com/spring-projects/spring-framework/tree/master/spring-web 85