Spring
Composite Recipes
Recipes that include further recipes, often including the individual recipes below.
- Find Mono/Flux ergonomic smells
- Find Spring Boot bootstrapping smells
- Find Spring Data / repository access smells
- Find Spring Data smells
- Find Spring Web / WebFlux smells
- Find Spring annotation-shape smells
- Find Spring configuration smells
- Find Spring coroutine-migration candidates
- Find Spring dependency-injection smells
- Find Spring legacy / deprecated API smells
- Find Spring proxied-annotation smells
- Find Spring testing smells
- Find WebClient / RestTemplate / ResponseEntity smells
- Find reactive / coroutine interop hazards
- Modernize Spring Boot Kotlin code
Recipes
- Find
@Asyncmethods on classes that aren'topen - Find
@Asynconprivatefunctions - Find
@Autowired lateinit varLogger fields - Find
@Autowired lateinit varfield injection - Find
@Autowired lateinit varproperties (ctor-injection candidate) - Find
@Autowiredon a single constructor - Find
@Autowired valfield declarations (not in ctor) - Find
@Autowired varproperties (notlateinit) - Find
@Bean fun foo(): X = X()candidates for thebeans \{ \}DSL - Find
@Beanmethods without@Scope - Find
@Cacheableonprivatefunctions - Find
@Component/@Service/@Repositoryondata class - Find
@ConfigurationPropertiesclasses that aren'tdata class - Find
@Controllerclasses whose methods all return data (consider@RestController) - Find
@EnableWebMvcon a Spring Boot application - Find
@Entityclasses withvarproperties only - Find
@Entity data classdeclarations (verifykotlin-jpaplugin) - Find
@EventListenermethods with non-Unitreturn types - Find
@GetMapping/@PostMapping/... methods returningMono<T> - Find
@Inject lateinit varfield injection - Find
@Lazyannotations on@Autowiredproperties - Find
@MockBeanonlateinit varfields - Find
@PathVariableparameters without an explicit name - Find
@PostMappingmethods missing@ResponseStatus(HttpStatus.CREATED) - Find
@PropertySourceon classes that lack@Configuration - Find
@Qualifieronlateinit varfields - Find
@RequestBodyon primitive parameters - Find
@RequestMapping(...)without an HTTP method - Find
@RequestMapping(method = [RequestMethod.GET])candidates for@GetMapping - Find
@Requiredannotations - Find
@RestControllermethods returningResponseEntity<T> - Find
@Service object Foodeclarations - Find
@SpyBeanonlateinit varfields - Find
@Transactionalmethods on classes that aren'topen - Find
@Transactionalonprivatefunctions - Find
@Valueonlateinit varproperties - Find
Environment.getProperty(...)calls - Find
Flux.blockFirst()calls outside@Testmethods - Find
Flux.blockLast()calls outside@Testmethods - Find
Flux.flatMap \{ x -> Mono.just(f(x)) \}patterns - Find
Flux.fromIterable(listOf(...))patterns - Find
Flux.subscribe \{ ... \}without an error consumer - Find
HttpServletRequestparameters in controllers - Find
MockMvcBuilders.standaloneSetup(...)calls - Find
Mono.block/Flux.blockFirst/Flux.blockLastcalls - Find
Mono.block()calls in non-test code - Find
Mono.block()calls outside@Testmethods - Find
Mono.deferContextual \{ ... \}insidesuspend fun - Find
Mono.flatMap \{ x -> Mono.just(f(x)) \}patterns - Find
Mono.zip(...)calls - Find
ResponseEntity(body, HttpStatus.OK)constructor calls - Find
RestTemplateallocations - Find Spring Data repository methods returning
Optional<T> - Find Spring stereotype classes not declared
open - Find
SpringApplication.run(MyApp::class.java, ...)calls - Find
WebClient.bodyToMono(X::class.java)calls - Find
WebClient.create()/WebClient.create(url)calls - Find
WebTestClienttest classes that don't useStepVerifier - Find any
lateinit varinjected field (@Autowired/@Inject/@Value) - Find
findByIdOrNull(id!!)calls - Find
mono.awaitSingle()calls inside Flux/Flow collectors - Find
repo.findById(id).get()chains - Find repository interfaces extending
CrudRepositoryinstead ofJpaRepository - Find
throw ...statements inside Mono/Flux operator lambdas - Find top-level
mainfunctions wrappingSpringApplication.run - Find
webClient...bodyToMono(X::class).block()chains