Соглашение о присвоении имен для контекста приложения Spring XML

Вот реализация, которую я добавил как дополнительный метод к классу DateTime, который обрабатывает и будущие и прошлые даты и предоставляет возможность приближения, которая позволяет Вам определять уровень детализации, который Вы ищете ("3-часовой назад" по сравнению с "3 часами, 23 минутами, 12 секунд назад"):

using System.Text;

/// <summary>
/// Compares a supplied date to the current date and generates a friendly English 
/// comparison ("5 days ago", "5 days from now")
/// </summary>
/// <param name="date">The date to convert</param>
/// <param name="approximate">When off, calculate timespan down to the second.
/// When on, approximate to the largest round unit of time.</param>
/// <returns></returns>
public static string ToRelativeDateString(this DateTime value, bool approximate)
{
    StringBuilder sb = new StringBuilder();

    string suffix = (value > DateTime.Now) ? " from now" : " ago";

    TimeSpan timeSpan = new TimeSpan(Math.Abs(DateTime.Now.Subtract(value).Ticks));

    if (timeSpan.Days > 0)
    {
        sb.AppendFormat("{0} {1}", timeSpan.Days,
          (timeSpan.Days > 1) ? "days" : "day");
        if (approximate) return sb.ToString() + suffix;
    }
    if (timeSpan.Hours > 0)
    {
        sb.AppendFormat("{0}{1} {2}", (sb.Length > 0) ? ", " : string.Empty,
          timeSpan.Hours, (timeSpan.Hours > 1) ? "hours" : "hour");
        if (approximate) return sb.ToString() + suffix;
    }
    if (timeSpan.Minutes > 0)
    {
        sb.AppendFormat("{0}{1} {2}", (sb.Length > 0) ? ", " : string.Empty, 
          timeSpan.Minutes, (timeSpan.Minutes > 1) ? "minutes" : "minute");
        if (approximate) return sb.ToString() + suffix;
    }
    if (timeSpan.Seconds > 0)
    {
        sb.AppendFormat("{0}{1} {2}", (sb.Length > 0) ? ", " : string.Empty, 
          timeSpan.Seconds, (timeSpan.Seconds > 1) ? "seconds" : "second");
        if (approximate) return sb.ToString() + suffix;
    }
    if (sb.Length == 0) return "right now";

    sb.Append(suffix);
    return sb.ToString();
}
9
задан 0sumgain 26 August 2009 в 12:51
поделиться

3 ответа

Если бы это было соглашение, я бы хотел, чтобы это было:

  1. файлы, хранящиеся в пакетах (не в пакете по умолчанию), чтобы избежать потенциальных конфликтов имен, а также означает, что мне не нужно включать в них имя приложения, оно определяется пакетом.
  2. файлы, все имена в нижнем регистре именуются символом «-» для разделения имен

Я обычно добавляю к файлам конфигурации Spring префикс «spring», чтобы было более очевидно, для чего они используются, но это не обязательно обязательно.

8
ответ дан 4 December 2019 в 13:48
поделиться

Для проекта Web MVC я обычно разбиваю различные файлы контекста по линиям ответственности:

  • appname-dao.xml
  • appname-servlet.xml
  • appname -services.xml
  • appname-security.xml
4
ответ дан 4 December 2019 в 13:48
поделиться

Либо верблюжий регистр, либо разделенный '-' будут работать нормально, если вы будете последовательны. Я знаю, что в нашем случае мы не помещаем файлы контекста в тот же каталог, что и код, если только сам код не поддерживает Spring, а в нашем случае это не так.

У нас есть два случая для этого, когда мы используем maven 2, файл контекста находится в каталоге ресурсов / Spring, где ресурс является родственником исходного каталога java. Там, где используется maven 1, мы просто создаем корневой пакет Spring и помещаем туда контекст. Оба эти случая предполагают «обычный» Java-код. В случае пакетов Wars, EJB и OSGi файлы обычно находятся в каталоге meta-inf.

Кроме того, мы не используем контекст приложения верхнего уровня, чтобы «собрать» все вместе. Мы просто создаем контекст с несколькими файлами контекста. Мы считаем, что это намного проще для тестирования различными способами: модульных тестов с фиктивными объектами, интеграционных тестов без сервера и полных интеграционных тестов, развернутых на сервере. Во всех этих сценариях просто измените конфигурацию создания контекста вместо того, чтобы иметь «главный» контекст для каждого сценария.

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

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