Применимая Java Web-система: необходимо спроектировать таблицу ресурсов так, чтобы можно было однозначно различать её по ресурсу + определённым вами полям.
Используйте уникальные поля для поиска родительского узла.
Если ваша система использует Spring MVC, вы можете использовать Spring.
<repositories>
<repository>
<id>wenwen</id>
<url>https://wenwen.bintray.com/mvn-repo/</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.huwenwen</groupId>
<artifactId>auto-inject-resource</artifactId>
<version>0.0.3</version>
</dependency>
<bean class="com.github.huwenwen.AutoInjectResource">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- @InjectResource所在的 package, можно быть несколько (разделять запятой), обычно это controller слой -->
<property name="basePackages" value="com.wen.controller"/>
</bean>
@InjectResource(name="resourceName", url="/test/123" parentName="resourceParentName")
// инъекция
@Inject
private AutoInjectResource autoInjectResource;
// вызов метода
autoInjectResource.saveResource();
Первый способ: добавьте файл auto_inject_resource.properties в путь к классам. Пример файла:
# имя таблицы ресурсов
resource.table.name=m_resource
# имя столбца URL в таблице ресурсов
table.column.url=RESOURCE_STRING
# имя столбца имени в таблице ресурсов
table.column.name=RESOURCE_NAME
# имя столбца сортировки в таблице ресурсов
table.column.power=SORT_INDEX
# имя столбца уровня в таблице ресурсов
table.column.grade=GRADE
# имя столбца родительского узла в таблице ресурсов
table.column.parent=PARENT_ID
# источник значения столбца родительского узла
table.column.parent.source=RESOURCE_ID
Второй способ: используйте свойства Spring для внедрения:
<bean class="com.github.huwenwen.AutoInjectResource">
<property name="tableName" value="m_resource"/>
<property name="columnUrl" value="RESOURCE_STRING"/>
<property name="columnName" value="RESOURCE_NAME"/>
<property name="columnPower" value="SORT_INDEX"/>
<property name="columnGrade" value="GRADE"/>
<property name="columnParent" value="PARENT_ID"/>
<property name="columnParentSource" value="RESOURCE_ID"/>
</bean>
@InjectResource(name = "resourceName", url="abc/123", parentName = "resourceParentName", customProps = {"key1:value1", "key2:value2"})
<bean class="com.github.huwenwen.AutoInjectResource">
<property name="otherConfirmUniqueColumns" value="column1,column2"/>
</bean>
Используйте (имя ресурса + column1 + column2), чтобы однозначно определить родительский узел и эту строку ресурса. Можно использовать один или несколько. Также можно не вводить, если не вводится, то по умолчанию используется [имя ресурса], чтобы однозначно различить родительский узел и этот ресурс. Можно ввести один или несколько раз. Или не вводить, тогда по умолчанию будет использоваться [имя ресурса] для однозначного определения родительского узла и этого ресурса. Если введено otherConfirmUniqueColumns, то ваши свойства @InjectResource parentOtherProps (можно не указывать, если нет родительского узла) и customProps также должны содержать эти поля. Например, если введено, то @InjectResource должен содержать parentOtherProps={"column1:value1, column2:value2"} (если нет родительского узла, можно не указывать) customProps={"column1:value1, column2:value2"}.
<bean class="com.github.huwenwen.AutoInjectResource">
<property name="defaultCustomProps">
<map>
<entry key="column1" value="value1"/>
<entry key="column2" value="value2"/>
</map>
</property>
<property name="defaultParentOtherProps">
<map>
<entry key="column1" value="value1"/>
<entry key="column2" value="value2"/>
</map>
</property>
</bean>
Ввод глобально вступает в силу. Если вы хотите, чтобы определённый ресурс не вступил в силу, вы можете использовать @InjectResource (enableDefaultCustomProps = false, enableDefaultParentOtherProps = false).
Глобальный ввод customProps и parentOtherProps и локальный ввод @InjectResource (customProps={}, parentOtherProps={}) имеют одинаковые ключи, локальные приоритеты выше.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )