Bu kurulumu yapmak için çeşitli kaynak olsa da versiyon farkından vb. nedenlerden dolayı bende işe yarayan kodları vs. bulmam biraz zamanımı aldı. Bu sebeple bunları burada paylaşarak zaman kaybı yaşamanıza engel olmak istedim.
Swagger’ın Maven' da projeye dahil edilmesi için pom.xml dosyasına yazılacak bağımlılık (dependency) :
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
Bu dependency'i ekledikten sonra Ctrl+Shift+O kombinasyonunu kullanarak bağımlılıkları çözümleyebilirsiniz.
Sonra projemizde SwaggerConfiguration classını oluşturmamız gerekiyor. Bu classı WebSecurity konfigürasyonlarını vs. gerçekleştirdiğim Config adlı package'ımın içerisinde oluşturdum.
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
Bu class ile swagger 2 kullanacağımızı belirtmiş oluyoruz.
Son olarak da daha önceden oluşturduğumuz WebSecurity classında birkaç değişiklik yapmamız gerekmekte.
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers( "/swagger*/**", "/webjars/**")
.antMatchers(HttpMethod.OPTIONS,"/**");
}
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.csrf().disable()
**.authorizeRequests() .antMatchers("/**", "/swagger*/**", "/webjars/**").permitAll()**
.anyRequest().authenticated().and()
.exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint).and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
}
Üstteki configure metodu swagger için projeme dahil ettiğim WebSecurityConfigurerAdapter classından override ettiğim metod.
Alttaki configure metodu swagger kullanmadan önce override ettiğim metod. Buna swagger için koyu harflerle belirttiğim satırı ekledim.
Daha sonrasında projemizi ayağa kaldırabiliriz ve http://localhost:8080/swagger-ui/index.html adresine giderek swagger ile oluşturulmuş dokümantasyona ulaşabiliriz.