Spring XML based configuration defined elements like <list/>, <set/>, <map/>, and <props/>. The purpose of these elements was to map XML based configuration to Java arrays and collection. Since the addition of JavaConfig, we don't require that kind of custom mappings because new configuration is itself in Java language, so we can directly define beans of Array and Collections.
Examples
Bean of Array
package com.logicbig.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import jakarta.annotation.PostConstruct;
import java.util.Arrays;
@Configuration
public class ArraysAsBeanExample {
@Bean
public String[] fruits() {
return new String[]{"apple", "banana", "orange"};
}
@Bean
public TestBean testBean(){
return new TestBean();
}
private static class TestBean {
@Autowired
private String[] fruits;
@PostConstruct
public void postConstruct() {
System.out.println(Arrays.toString(fruits));
}
}
public static void main(String[] args) {
new AnnotationConfigApplicationContext(
ArraysAsBeanExample.class);
}
}
Output[apple, banana, orange]
Bean of List
package com.logicbig.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import jakarta.annotation.PostConstruct;
import java.util.Arrays;
import java.util.List;
@Configuration
public class ListAsBeanExample {
@Bean
public List<String> fruits() {
return Arrays.asList("apple", "banana", "orange");
}
@Bean
public TestBean testBean(){
return new TestBean();
}
private static class TestBean {
@Autowired
private List<String> fruits;
@PostConstruct
public void postConstruct() {
System.out.println(fruits);
}
}
public static void main(String[] args) {
new AnnotationConfigApplicationContext(
ListAsBeanExample.class);
}
}
Output[apple, banana, orange]
Bean of Set
package com.logicbig.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import jakarta.annotation.PostConstruct;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@Configuration
public class SetAsBeanExample {
@Bean
public Set<String> fruits() {
return new HashSet<>(Arrays.asList("apple", "banana", "orange"));
}
@Bean
public TestBean testBean(){
return new TestBean();
}
private static class TestBean {
@Autowired
private Set<String> fruits;
@PostConstruct
public void postConstruct() {
System.out.println(fruits);
}
}
public static void main(String[] args) {
new AnnotationConfigApplicationContext(
SetAsBeanExample.class);
}
}
Output[banana, orange, apple]
Bean of Map
package com.logicbig.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import jakarta.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class MapAsBeanExample {
@Bean
public HashMap<String, String> fruits() {
HashMap<String, String> map = new HashMap<>();
map.put("apple", "every morning");
map.put("banana", "after lunch");
map.put("orange", "every evening");
return map;
}
@Bean
public TestBean testBean(){
return new TestBean();
}
private static class TestBean {
@Autowired
private Map<String, String> fruits;
@PostConstruct
public void postConstruct() {
System.out.println(fruits);
}
}
public static void main(String[] args) {
new AnnotationConfigApplicationContext(
MapAsBeanExample.class);
}
}
Output{banana=after lunch, orange=every evening, apple=every morning}
Bean of User Object List
package com.logicbig.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import jakarta.annotation.PostConstruct;
import java.util.Arrays;
import java.util.List;
@Configuration
public class ObjectListAsBeanExample {
@Bean
public List<Fruit> fruits() {
return Arrays.asList(
new Fruit("apple", "every morning"),
new Fruit("banana", "after lunch"),
new Fruit("orange", "every evening")
);
}
@Bean
public TestBean testBean() {
return new TestBean();
}
private static class TestBean {
@Autowired
private List<Fruit> fruits;
@PostConstruct
public void postConstruct() {
System.out.println(fruits);
}
}
private static class Fruit {
private String name;
private String whenToEat;
public Fruit(String name, String whenToEat) {
this.name = name;
this.whenToEat = whenToEat;
}
@Override
public String toString() {
return "Fruit{" +
"name='" + name + '\'' +
", whenToEat='" + whenToEat + '\'' +
'}';
}
}
public static void main(String[] args) {
new AnnotationConfigApplicationContext(
ObjectListAsBeanExample.class);
}
}
Output[Fruit{name='apple', whenToEat='every morning'}, Fruit{name='banana', whenToEat='after lunch'}, Fruit{name='orange', whenToEat='every evening'}]
Example ProjectDependencies and Technologies Used: - spring-context 6.1.2 (Spring Context)
Version Compatibility: 4.3.0.RELEASE - 6.1.2 Version compatibilities of spring-context with this example: Versions in green have been tested.
- jakarta.jakartaee-api 10.0.0 (Eclipse Foundation)
- JDK 17
- Maven 3.8.1
|
|