Миграция приложения для использования Guice - как ввести транзакции в существующие объекты?

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

Если подстановочный текст предназначен для подсказки о том, как заполнить ввод, лучше располагаться рядом со входом, где его можно увидеть и после заполнения ввода. Кроме того, использование текста-заполнителя внутри текстовых компонентов может вызвать проблемы, например, с брайлевскими устройствами.

Если используется текст-заполнитель, независимо от принципов юзабилити, следует убедиться, что он сделан ненавязчивым образом, чтобы он работал с пользовательскими агентами без javascript или когда js отключен.

8
задан Kyle Krull 4 June 2009 в 17:01
поделиться

2 ответа

Если я правильно понимаю, ваша проблема состоит из двух независимых частей:

  1. использование правильного экземпляра Transaction в классах Guice-fied
  2. с использованием правильного экземпляра Transaction в устаревших классах.

] Для '1' ваш настраиваемый поставщик работает, но я бы создал настраиваемую область для транзакции и привязал бы класс Transaction к этой области. См. http://code.google.com/p/google-guice/wiki/CustomScopes для получения инструкций по настраиваемым областям действия.

Что касается «2», если у вас есть настраиваемая область действия, это обычная проблема использования Guice для предоставления экземпляров устаревшим классам. Вы не упомянули код, который в настоящее время предоставляет экземпляры транзакций для устаревших классов, но вы можете просто изменить этот конкретный фрагмент кода, чтобы запросить экземпляр у Guice. Поскольку вы внутри своего "

6
ответ дан 5 December 2019 в 21:21
поделиться

Взгляните на Assisted Inject . Чтобы использовать его, определите трехстрочный интерфейс:

public interface DataAccessClassFactory {
  DataAccessClass create(Transaction transaction);
}

... и затем используйте привязку FactoryProvider для привязки фабрики:

bind(DataAccessClassFactory.class).toProvider(
    FactoryProvider.newFactory(DataAccessClassFactory.class, DataAccessClass.class));

Затем вы можете внедрить DataAccessClassFactory где угодно вам необходимо создать DataAccessClass . AssistedInject включен в Guice 2, хотя для него требуется отдельный файл .jar.

1
ответ дан 5 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: