Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
52 views

@spring Boot Annotations

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views

@spring Boot Annotations

Copyright
© © All Rights Reserved
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