Spring Configuration using java code - AyushiDamele/Spring GitHub Wiki

Java Configuration(No XML!)

  • • Instead of configuring Spring container using XML

  • • Configure the Spring container with Java code

  • Development Process

    1. Create a Java class and annotate as @Configuration
    1. Add component scanning support: @ComponentScan (optional)
    1. Read Spring Java configuration class
    1. Retrieve bean from Spring container

Step 1: Create a Java class and annotate as @Configuration

@Configuration 
public class SportConfig { 
}

Step 2: Add component scanning support @CommponentScan (Optional Step)

@Configuration
@ComponentScan("com.luv2code.springdemo")
public class SportConfig { 
} 

Step 3: Read Spring Java configuration class

AnnotationConfigApplicationContext context = 
new AnnotationConfigApplicationContext(SportConfig.class);

Step 4: Retrieve bean from Spring container

Coach theCoach = context.getBean("tennisCoach", Coach.class);

Defining Beans with Java Code

Development Process

    1. Define method to expose bean
    1. Inject bean dependencies
    1. Read Spring Java configuration class
    1. Retrieve bean from Spring container

Step 1: Define method to expose bean

@Configuration
public class SportConfig {

   @Bean 
   public Coach swimCoach() {
         SwimCoach mySwimCoach = new SwimCoach();
         return mySwimCoach; 
   }
}

Step 2: Inject bean dependencies

@Configuration 
public class SportConfig {
  @Bean
  public FortuneService happyFortuneService() { 
      return new HappyFortuneService(); 
  } 
  
  @Bean
  public Coach swimCoach() {
      SwimCoach mySwimCoach = new SwimCoach( happyFortuneService() );
      return mySwimCoach; 
  } 
}

Step 3: Read Spring Java configuration class

AnnotationConfigApplicationContext context = 
new AnnotationConfigApplicationContext(SportConfig.class)

Step 4: Retrieve bean from Spring container

Coach theCoach = context.getBean("swimCoach", Coach.class);

Injecting Values from Properties File

Development Process

    1. Create Properties File
    1. Load Properties File in Spring config
    1. Reference values from Properties File

Step 1: Create Properties File sport.properties (inside src folder)

[email protected] 
foo.team=Awesome Java Coders

Step 2: Load Properties file in Spring config File : sportConfig.java

@Configuration
@PropertySource("classpath:sport.properties")
public class SportConfig {  
   … 
}

Step 3: Reference Values from Properties File

File : SwimCoach.java

public class SwimCoach implements Coach {

   @Value("${foo.email}")
   private String email;
  
   @Value("${foo.team}")
   private String team; 
   ... 
}