The following example show you how to use the <list>
element to wire collection property. We can use it to wire property of either arrays or some implementation of java.util.Collection
such as java.util.ArrayList
.
For this example we will create a bean called Album
that have a collection of Song
beans in it. So here is our bean classes.
package org.kodejava.spring.core;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class Album {
private String title;
private int year;
private List<Song> songs = new ArrayList<>();
private Map<String, Publisher> publisher = new HashMap<>();
private Properties props = new Properties();
public Album() {
}
public void setTitle(String title) {
this.title = title;
}
public void setYear(int year) {
this.year = year;
}
public void setSongs(List<Song> songs) {
this.songs = songs;
}
public void setPublisher(Map<String, Publisher> publisher) {
this.publisher = publisher;
}
public void setProps(Properties props) {
this.props = props;
}
@Override
public String toString() {
return "Album{" +
"title='" + title + '\'' +
", year=" + year +
", songs=" + songs +
", publisher=" + publisher +
", props=" + props +
'}';
}
}
package org.kodejava.spring.core;
public class Song {
private String title;
private String writer;
public Song() {
}
public void setTitle(String title) {
this.title = title;
}
public void setWriter(String writer) {
this.writer = writer;
}
@Override
public String toString() {
return "Song{" +
"title='" + title + '\'' +
", writer='" + writer + '\'' +
'}';
}
}
package org.kodejava.spring.core;
public class Publisher {
private String name;
public Publisher() {
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Publisher{" +
"name=" + name +
'}';
}
}
Here is the Spring configuration file, CollectionList.xml
.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="song1" class="org.kodejava.spring.core.Song">
<property name="title" value="I Saw Her Standing There" />
<property name="writer" value="Beatles" />
</bean>
<bean id="song2" class="org.kodejava.spring.core.Song">
<property name="title" value="Misery" />
<property name="writer" value="Beatles" />
</bean>
<bean id="song3" class="org.kodejava.spring.core.Song">
<property name="title" value="Anna (Go to Him)" />
<property name="writer" value="Beatles" />
</bean>
<bean id="album" class="org.kodejava.spring.core.Album">
<property name="title" value="Please Please Me" />
<property name="year" value="1963" />
<property name="songs">
<list>
<ref bean="song1" />
<ref bean="song2" />
<ref bean="song3" />
</list>
</property>
</bean>
</beans>
The part of the configuration that wire the song collection is inside the album
bean. You can see that we have a property name songs
. This property has a <list>
element that contains a couple <ref>
elements referring to some Song
type beans.
Now let’s run it with the following code:
package org.kodejava.spring.core;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DemoList {
public static void main(String[] args) {
var context = new ClassPathXmlApplicationContext("collection-list.xml");
Album album = (Album) context.getBean("album");
System.out.println("Album = " + album);
context.close();
}
}
You’ll see the following output when you run the program:
Album = Album{title='Please Please Me', year=1963, songs=[Song{title='I Saw Her Standing There', writer='Beatles'}, Song{title='Misery', writer='Beatles'}, Song{title='Anna (Go to Him)', writer='Beatles'}], publisher={}, props={}}
Maven Dependencies
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.23</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.23</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.3.23</version>
</dependency>
</dependencies>
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024