Setter Dependency Injection with Array of String
In some scenarios, we may need to inject an array of strings to an object.
Consider the example where Person has hobbies
In this case, we can use Array of String which stores the hobbies
Let us see the same in spring through Setter Dependency Injection
Create a class called Person
It contains 3 attributes id,name and hobbies where hobbies is an array of String.
It contains 3 setter methods one for each attribute
It also contains showHobbies() method to display the hobbies injected to the person object.
- package com.kb.di;
- public class Person {
- private int id;
- private String name;
- private String[] hobbies;
- public void showHobbies() {
- for (int i = 0; i < hobbies.length; i++) {
- System.out.println(hobbies[i]);
- }
- }
- public void setId(int id) {
- this.id = id;
- }
- public void setName(String name) {
- this.name = name;
- }
- public void setHobbies(String[] hobbies) {
- this.hobbies = hobbies;
- }
- }
package com.kb.di; public class Person { private int id; private String name; private String[] hobbies; public void showHobbies() { for (int i = 0; i < hobbies.length; i++) { System.out.println(hobbies[i]); } } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setHobbies(String[] hobbies) { this.hobbies = hobbies; } }
Create a spring bean definition file
In this file, we used < property > tag with < array > to define the hobbies
< array > tag is used to inject the hobbies defined as array of strings in the Person class.
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
- <bean id="person" class="com.kb.di.Person">
- <property name="id" value="1"></property>
- <property name="name" value="Raj"></property>
- <property name="hobbies">
- <array>
- <value>Playing cricket</value>
- <value>Coding</value>
- <value>Reading books</value>
- </array>
- </property>
- </bean>
- </beans>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <bean id="person" class="com.kb.di.Person"> <property name="id" value="1"></property> <property name="name" value="Raj"></property> <property name="hobbies"> <array> <value>Playing cricket</value> <value>Coding</value> <value>Reading books</value> </array> </property> </bean> </beans>
Create a pom.xml file
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>Spring</groupId>
- <artifactId>SpringCore</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>SpringCore</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>4.2.4.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>4.2.4.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Spring</groupId> <artifactId>SpringCore</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>SpringCore</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
Create a SetterDI class
This class loads the spring beans using application context and calls the person class method to display the hobbies.
- package com.kb.di;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class SetterDI {
- public static void main(String[] args) {
- ApplicationContext applicationContext=new ClassPathXmlApplicationContext("beans.xml");
- Person person = (Person)applicationContext.getBean("person");
- person.showHobbies();
- }
- }
package com.kb.di; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SetterDI { public static void main(String[] args) { ApplicationContext applicationContext=new ClassPathXmlApplicationContext("beans.xml"); Person person = (Person)applicationContext.getBean("person"); person.showHobbies(); } }
Run the SetterDI class and see the output as below