Java spring util map

Spring Tutorial — Spring Map Properties

We can fill value or a list of values to a Java bean defined in Spring xml configuration file.

The following sections shows how to fill data to Map.

Java Bean

In order to show how to use xml configuration file to fill collection properties, we defined a Customer object with four collection properties.

package com.java2s.common; import java.util.HashMap; import java.util.Map; public class Customer < private Map maps = new HashMap(); public String toString() < return maps.toString(); >public Map getMaps() < return maps; >public void setMaps(Map maps) < this.maps = maps; >>
package com.java2s.common; public class Person < private String name; private int age; private String address; public String getName() < return name; >public void setName(String name) < this.name = name; >public int getAge() < return age; >public void setAge(int age) < this.age = age; >public String getAddress() < return address; >public void setAddress(String address) < this.address = address; >@Override public String toString() < return "Person [name , age , address ]"; > >

Map

The following code shows how to fill data to a java.util.Set typed property.

The code fills in three values. The first one is hard-coded value 1. The second one is a bean reference. We have to define PersonBean somewhere in order to use it here. The third one is a bean definition with property-setting. When filling data for java.util.Map we have to provide key and value pair.

. "maps"> "Key 1" value="1" /> "Key 2" value-ref="PersonBean" /> "Key 3"> class="com.java2s.common.Person"> "name" value="java2sMap" /> "address" value="address" /> "age" value="28" />    .

Example

Full Spring’s bean configuration file.

"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-2.5.xsd"> "CustomerBean" class="com.java2s.common.Customer"> "maps"> "Key 1" value="1" /> "Key 2" value-ref="PersonBean" /> "Key 3"> class="com.java2s.common.Person"> "name" value="java2sMap" /> "address" value="address" /> "age" value="28" />     "PersonBean" class="com.java2s.common.Person"> "name" value="java2s1" /> "address" value="address 1" /> "age" value="28" />  

Here is the code to load and run the configuration.

package com.java2s.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App < public static void main( String[] args ) < ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml"); Customer cust = (Customer)context.getBean("CustomerBean"); System.out.println(cust); > >

MapFactoryBean

MapFactoryBean class can create a Map collection class HashMap or TreeMap in Spring’s bean configuration file.

The following code shows how to create a HashMap, fill data and then inject it into a bean property.

Here is the Java bean class.

package com.java2s.common; //from w w w . ja va2 s . c om import java.util.HashMap; import java.util.Map; public class Customer < private Map maps = new HashMap(); public String toString() < return maps.toString(); > public Map getMaps() < return maps; > public void setMaps(Map maps) < this.maps = maps; >>

Here is Spring’s bean configuration file.

"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-2.5.xsd"> "CustomerBean" class="com.java2s.common.Customer"> "maps"> class="org.springframework.beans.factory.config.MapFactoryBean"> "targetMapClass"> java.util.HashMap  "sourceMap"> "Key1" value="1" /> "Key2" value="2" /> "Key3" value="3" />      

util schema

We also can use util schema and to fill data to java.util.Map.

"http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd"> "CustomerBean" class="com.java2s.common.Customer"> "maps"> class="java.util.HashMap"> "Key1" value="1" /> "Key2" value="2" /> "Key3" value="3" />    

Here is the code to run the application.

package com.java2s.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App < public static void main( String[] args ) < ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml"); Customer cust = (Customer)context.getBean("CustomerBean"); System.out.println(cust); > >

The code above generates the following result.

  • Next »
  • « Previous

java2s.com | © Demo Source and Support. All rights reserved.

Источник

Схема util

Как следует из названия, теги util предназначены для решения распространенных проблем со служебным конфигурированием, таких как конфигурирование коллекций, обращение к константам и так далее. Чтобы использовать теги в схеме util , необходимо написать следующую преамбулу (вводную часть) в верхней части вашего конфигурационного XML-файла для Spring (текст в фрагменте ссылается на правильную схему, чтобы теги в пространстве имен util стали доступны):

Использование

Рассмотрим следующее определение бина:

В предыдущей конфигурации реализация FactoryBean ( FieldRetrievingFactoryBean ) в Spring используется для установки значения свойства isolation в бинах на значение константы java.sql.Connection.TRANSACTION_SERIALIZABLE . Все замечательно, но выглядит слишком перегружено и (без необходимости) раскрывает «нутро» Spring конечному пользователю.

Следующая версия на основе XML Schema более лаконична, четко выражает намерение разработчика («внедрить это константное значение») и лучше читается:

Установка свойства бина или аргумента конструктора из значения поля

FieldRetrievingFactoryBean – это FactoryBean , который получает значение static или нестатического поля. Обычно он используется для получения public static final констант, которые затем могут быть использованы для установки значения свойства или аргумента конструктора для другого бина.

В следующем примере показано, как статическое поле открывается с помощью свойства staticField :

Существует также удобная c практической точки зрения форма, когда статическое поле указывается в качестве имени бина, как показано в следующем примере:

Это означает, что больше нельзя выбрать id бина (поэтому любой другой бин, который ссылается на него, также должен использовать это более длинное имя), но данная форма очень лаконична для определения и очень удобна для использования в качестве внутреннего бина, поскольку id не нужно указывать для ссылки на бин, как это показано в следующем примере:

Вы также можете получить доступ к нестатическому полю (экзмпляра) другого бина, как описано в документации API-интерфейса для класса FieldRetrievingFactoryBean .

В Spring внедрять перечисляемые величины в бины в качестве свойств или аргументов конструктора очень легко. Вам на самом деле даже не нужно ничего делать или знать о внутреннем устройстве Spring (или даже о таких классах, как FieldRetrievingFactoryBean ). Следующий пример перечисления показывает, насколько простым может быть внедрение перечисляемых величин:

package javax.persistence; public enum PersistenceContextType
package javax.persistence enum class PersistenceContextType

Теперь рассмотрим следующий сеттер типа PersistenceContextType и соответствующее определение бина:

package example; public class Client < private PersistenceContextType persistenceContextType; public void setPersistenceContextType(PersistenceContextType type) < this.persistenceContextType = type; >>
package example class Client

Использование

Рассмотрим следующий пример:

В предыдущей конфигурации реализация FactoryBean ( PropertyPathFactoryBean ) в Spring используется для создания бина (типа int ) под названием testBean.age , значение которого равно свойству age бина testBean .

Теперь рассмотрим следующий пример, в котором добавлен добавляет :

Значение атрибута path элемента следует форме beanName.beanProperty . В данном случае он принимает свойство age бина с именем testBean . Значение этого свойства age равно 10 .

Использование для установки свойства бина или аргумента конструктора

PropertyPathFactoryBean – это FactoryBean , которая вычисляет путь свойства для заданного целевого объекта. Целевой объект может быть задан напрямую или через имя бина. Затем можно использовать это значение в другом определении бина в качестве значения свойства или аргумента конструктора.

В следующем примере путь используется только по отношению к другому бину, по имени:

В следующем примере путь вычисляется по внутреннему бину:

Существует также краткая форма, в которой имя бина является путем к свойству. В следующем примере показана сокращенная форма:

Эта форма означает отсутствие выбора в имени бина. Любая ссылка на него также должна использовать тот же id , который является путем. Если он используется как внутренний бин, на него вообще не нужно ссылаться, что и продемонстрировано в следующем примере:

Можно специально задать тип результата в фактическом определении. Это не обязательно для большинства случаев использования, но иногда может быть практично. См. javadoc для получения дополнительной информации об этой функции.

Использование

Рассмотрим следующий пример:

В предыдущей конфигурации реализация FactoryBean ( PropertiesFactoryBean ) в Spring используется для создания экземпляра java.util.Properties со значениями, загруженными из предоставленного местоположения Resource .

В следующем примере для более краткого представления используется элемент util:properties :

Использование

Рассмотрим следующий пример:

    pechorin@hero.org raskolnikov@slums.org stavrogin@gov.org porfiry@gov.org   

В предыдущей конфигурации реализация FactoryBean ( ListFactoryBean ) в Spring используется для создания экземпляра java.util.List и его инициализации со значениями, взятыми из предоставленного sourceList .

В следующем примере используется элемент для более краткого представления:

  pechorin@hero.org raskolnikov@slums.org stavrogin@gov.org porfiry@gov.org 

Вы также можете управлять точным типом создаваемого и заполняемого List , используя атрибут list-class в элементе . Например, если действительно необходимо, чтобы был создан java.util.LinkedList , то можно использовать следующую конфигурацию:

 jackshaftoe@vagabond.org eliza@thinkingmanscrumpet.org vanhoek@pirate.org d'd'Arcachon@nemesis.org 

Если атрибут list-class не указан, контейнер выбирает реализацию List .

Использование

Рассмотрим следующий пример:

В предыдущей конфигурации реализация FactoryBean ( MapFactoryBean ) в Spring используется для создания экземпляра java.util.Map , инициализированного при помощи пар ключ-значение, взятыми из предоставленного «sourceMap» .

В следующем примере используется элемент для более краткого представления:

Вы также можете управлять точным типом создаваемого и заполняемого Map , используя атрибут ‘map-class’ в элементе . Например, если действительно необходимо, чтобы был создан экземпляр java.util.TreeMap , то можно использовать следующую конфигурацию:

Если атрибут «map-class» не указан, контейнер выбирает реализацию Map .

Использование

Рассмотрим следующий пример:

    pechorin@hero.org raskolnikov@slums.org stavrogin@gov.org porfiry@gov.org   

В предыдущей конфигурации реализация FactoryBean ( SetFactoryBean ) в Spring используется для создания экземпляра java.util.Set , инициализированного со значениями, взятыми из предоставленного sourceSet .

В следующем примере используется элемент для более краткого представления:

  pechorin@hero.org raskolnikov@slums.org stavrogin@gov.org porfiry@gov.org 

Вы также можете управлять точным точным типом создаваоемого и заполняемого Set , используя атрибут set-class в элементе . Например, если действительно необходимо, чтобы был создан экземпляр java.util.TreeSet , то можно использовать следующую конфигурацию:

 pechorin@hero.org rraskolnikov@slums.org stavrogin@gov.org porfiry@gov.org 

Если атрибут set-class не указан, контейнер выбирает реализацию Set .

Источник

Читайте также:  Срезы матриц в python
Оцените статью