Java spring util set

Tech Tutorials

Tutorials and posts about Java, Spring, Hadoop and many more. Java code examples and interview questions. Spring code examples.

Thursday, May 6, 2021

Spring util-namespace Example For Wiring Collection

Spring provides util-namespace that helps in dealing with common utility configuration issues, such as configuring collections, referencing constants. Mostly I use it for wiring collection and this post will show how to do that using util namespace in Spring.

To use the tags in the util schema, you need to declare the util-namespace and its schema in the XML:

Using util:list and util:set

Let’s take an example class Order which has a list called itemList and set called itemSet.

public class Order < private String id; private ListitemList; private Set itemSet; public String getId() < return id; >public void setId(String id) < this.id = id; >public List getItemList() < return itemList; >public void setItemList(List itemList) < this.itemList = itemList; >public Set getItemSet() < return itemSet; >public void setItemSet(Set itemSet) < this.itemSet = itemSet; >>

In order to wire this list and set with in the order bean you can have property element like this-

   Laptop RAM Drive Drive    Laptop RAM Drive Drive    

Using util:list (and util:set) you can create a separate bean for the list or set and then wire it as a reference in the required bean.

Читайте также:  Ajax php json form

You can also explicitly control the exact type of List that will be instantiated and populated via the use of the list-class attribute on the element. For set the same attribute is called set-class.

XML configuration with util:list and util:set

   Laptop RAM Drive Drive  Laptop RAM Drive Drive      
item from List - Laptop item from List - RAM item from List - Drive item from List - Drive item from set - Drive item from set - Laptop item from set – RAM

Here you can see that list and set both are created as a separate beans now using util:list and util:set respectively. Also notice the use of list-class which is ArrayList and set-class which is given as TreeSet, that is why values in the set are sorted. Since Set can store only unique values “Drive” is stored only once even if it is specified twice for Set.

Using util:map and util:properties

In the example for util:map apart from Order class, Item class is also used.

Let’s say there is an Order class that has a Map and Properties fields.

import java.util.Map; import java.util.Properties; public class Order < private String id; private MapitemMap; private Properties itemProp; public String getId() < return id; >public void setId(String id) < this.id = id; >public Map getItemMap() < return itemMap; >public void setItemMap(Map itemMap) < this.itemMap = itemMap; >public Properties getItemProp() < return itemProp; >public void setItemProp(Properties itemProp) < this.itemProp = itemProp; >>
public class Item < private String name; private double price; public String getName() < return name; >public void setName(String name) < this.name = name; >public double getPrice() < return price; >public void setPrice(double price) < this.price = price; >>

item from Map — 1 RAM 34.78 item from Map — 2 Laptop 534.0 items from Properties

Here you can notice how map and properties are configured using util:map and util:properties respectively. In util:map notice the use of map:class attribute to define the type of Map used, key-type and value-type attributes are also used to define the type of map keys and values. While defining the values of Map, which are of type Item, p-namespace is used.

That’s all for this topic Spring util-namespace Example For Wiring Collection. If you have any doubt or any suggestions to make please drop a comment. Thanks!

Источник

Схема 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 .

Источник

Оцените статью