0% found this document useful (0 votes)
54 views

@spring Boot Annotations

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views

@spring Boot Annotations

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Spring Boot Annotations

The New State of OAuth2 in Spring Security 5 (LSS - Module 17 - Lesson 3)

Last updated: January 8, 2024

Written by:Attila Fejér

Reviewed by:Michal Aibin

 Spring Boot

 Boot Basics

 reference

 Spring Annotations

Just published a deep dive into building a relevance-focused search with


MongoDB. More or less out of the box:
>> MongoDB Atlas Search
This article is part of a series:

1. Overview
Spring Boot made configuring Spring easier with its auto-configuration feature.
In this quick tutorial, we’ll explore the annotations from
the org.springframework.boot.autoconfigure and org.springframework.boot.autoconfigure.co
ndition packages.

2. @SpringBootApplication
We use this annotation to mark the main class of a Spring Boot application:
@SpringBootApplication
class VehicleFactoryApplication {

public static void main(String[] args) {


SpringApplication.run(VehicleFactoryApplication.class, args);
}
}Copy
@SpringBootApplication encapsulates @Configuration, @EnableAutoConfiguration,
and @ComponentScan annotations with their default attributes.

3. @EnableAutoConfiguration
@EnableAutoConfiguration, as its name says, enables auto-configuration. It means
that Spring Boot looks for auto-configuration beans on its classpath and automatically
applies them.
Note, that we have to use this annotation with @Configuration:
@Configuration
@EnableAutoConfiguration
class VehicleFactoryConfig {}Copy

4. Auto-Configuration Conditions
Usually, when we write our custom auto-configurations, we want Spring to use them
conditionally. We can achieve this with the annotations in this section.
We can place the annotations in this section on @Configuration classes or @Bean methods.
In the next sections, we’ll only introduce the basic concept behind each condition. For further
information, please visit this article.

4.1. @ConditionalOnClass and @ConditionalOnMissingCla


ss
Using these conditions, Spring will only use the marked auto-configuration bean if the class in
the annotation’s argument is present/absent:
@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoconfiguration {
//...
}Copy

4.2. @ConditionalOnBean and @ConditionalOnMissingBea


n
We can use these annotations when we want to define conditions based on the presence or
absence of a specific bean:
@Bean
@ConditionalOnBean(name = "dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory() {
// ...
}Copy

4.3. @ConditionalOnProperty
With this annotation, we can make conditions on the values of properties:
@Bean
@ConditionalOnProperty(
name = "usemysql",
havingValue = "local"
)
DataSource dataSource() {
// ...
}Copy

4.4. @ConditionalOnResource
We can make Spring to use a definition only when a specific resource is present:
@ConditionalOnResource(resources = "classpath:mysql.properties")
Properties additionalProperties() {
// ...
}Copy

4.5. @ConditionalOnWebApplication and @ConditionalOnN


otWebApplication
With these annotations, we can create conditions based on if the current application is or
isn’t a web application:
@ConditionalOnWebApplication
HealthCheckController healthCheckController() {
// ...
}Copy
4.6. @ConditionalExpression
We can use this annotation in more complex situations. Spring will use the marked definition
when the SpEL expression is evaluated to true:

@Bean
@ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}")
DataSource dataSource() {
// ...
}Copy

4.7. @Conditional
For even more complex conditions, we can create a class evaluating the custom condition.
We tell Spring to use this custom condition with @Conditional:
@Conditional(HibernateCondition.class)
Properties additionalProperties() {
//...
}Copy

5. Conclusion
In this article, we saw an overview of how can we fine-tune the auto-configuration process
and provide conditions for custom auto-configuration beans.

You might also like