1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/I-TAKE-TODAY-today-framework

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

TODAY Infrastructure

Логотип Java-библиотека для инфраструктуры прикладного программного обеспечения.

Java17 GPLv3 Развёртывание Покрытие тестами

Вы спрашиваете меня, как выглядит элегантный код? Тогда я должен показать его!

Основные цели

В основном для обучения технологиям, попутно предоставляя базовую структуру для собственного блога (на самом деле блог также был создан для изучения и практики технологий). Блог также открыт: https://github.com/TAKETODAY/today-blog.

История

Всё началось с изучения программирования в университете, позже я создал блог с помощью Java Servlet. В процессе разработки я обнаружил много повторяющегося кода, который мне показался неэлегантным, хотя тогда я только начинал изучать программирование. Поэтому, когда я изучал Struts2, я попытался написать программу, которая устраняла бы большую часть повторяющегося кода с помощью конфигурации XML. Так появился первый today-web (https://gitee.com/I-TAKE-TODAY/today-web/tree/v1.1.1/).

Позже, изучив Java аннотации, я реализовал версию программы, использующую аннотации для конфигурации (today-web аннотированная версия, https://gitee.com/I-TAKE-TODAY/today-web/tree/2.1.x/).

Сегодняшняя веб-версия с аннотациями только что появилась, и я также изучаю Spring, но чувствую, что контейнер IoC не очень удобен. Я видел в Интернете множество мини-Spring, поэтому решил попробовать создать свой собственный. Это решение было принято потому, что я уже написал today-web, и создание IoC должно быть несложным. Сначала я опирался на различные мини-пружины, и теперь, оглядываясь назад, понимаю, что это привело к некоторым ошибкам в моём понимании. С июня по декабрь 2021 года я углубился в изучение исходного кода Spring и исправил свои ошибки. Оказалось, что написать такую вещь действительно несложно, просто нужно немного поработать над элегантностью. Я считаю, что мой код элегантен. Не верите? Вы можете посетить мою прямую трансляцию на Bilibili (https://live.bilibili.com/22702726). (Я начал транслировать в прямом эфире написание этой библиотеки в 2021 году, а затем, из-за занятости на работе, перестал, но планирую возобновить, когда у меня будет время).

Когда я только начал писать (примерно в 2018 году, я также проверил записи о фиксации Git), я не знал, с чего начать, поэтому обратился к различным мини-пружинам, упомянутым выше. Таким образом, начался новый этап обучения. Изучение того, как сканировать файлы классов, изучение Java аннотаций, Java байт-кода, динамических прокси, повторное понимание интерфейсов, некоторые шаблоны проектирования, использование Git и постепенное осознание важности модульного тестирования. По мере углубления обучения фреймворк претерпел несколько рефакторингов, и у меня также сформировалось собственное мнение об инъекциях зависимостей. Постепенно я понял, что могу понять исходный код Spring. Spring действительно мощный.

Если вы спросите меня, как научиться программированию, я думаю, что создание собственных проектов — хороший способ. Мне ещё многое предстоит изучить. Например, знания в области распределённых систем, поэтому в будущем вы увидите появление таких проектов, как today-rpc, today-distributed-* и т. д.

🛠️ Установка

Gradle

settings.gradle

buildscript {
  repositories {
    mavenLocal()
    maven {
      url "https://oss.sonatype.org/content/repositories/snapshots/"
    }
    mavenCentral()
  }

  dependencies {
    classpath "cn.taketoday:infra-gradle-plugin:5.0.0-Draft.1-SNAPSHOT"
  }
}

build.gradle

apply plugin: "java"
apply plugin: 'cn.taketoday.application'
apply plugin: 'io.spring.dependency-management' // После добавления этого плагина можно автоматически импортировать infra-dependencies

repositories {
  mavenLocal()
  maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
  maven { url "https://maven.aliyun.com/repository/public" }
  mavenCentral()
}

dependencies {
  implementation 'cn.taketoday:ip2region-java:1.0-SNAPSHOT'
  implementation 'cn.taketoday:today-starter-netty'
  implementation 'cn.taketoday:today-starter-web'
}

Конкретный проект можно посмотреть в infra-samples (./infra-samples).

### Maven
```xml
<dependency>
  <groupId>cn.taketoday</groupId>
  <artifactId>today-starter-web</artifactId>
  <version>${infraVersion}</version>
</dependency>

<dependency>
  <groupId>cn.taketoday</groupId>
  <artifactId>today-starter-netty</artifactId>
  <version>${infraVersion}</version>
</dependency>

Начало работы

@Slf4j
@RestController
@InfraApplication
public class DemoApplication {

  public static void main(String[] args) {
    Application.run(DemoApplication.class, args);
  }

  @GET("/index")
  public String index() {
    return "Hello";
  }
``` 🙏 **Благодарности**

Создание этого проекта было бы невозможно без следующих проектов:
* Spring Framework  https://github.com/spring-projects/spring-framework;
* Spring Boot   https://github.com/spring-projects/spring-boot;
* Jetbrains  https://www.jetbrains.com/?from=https://github.com/TAKETODAY/today-infrastructure. Спасибо компании Jetbrains за предоставление бесплатных открытых лицензий.

📄 **Лицензия**

Используется лицензия GPLv3  https://github.com/TAKETODAY/today-infrastructure/blob/master/LICENSE.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
GPL-3.0
Отмена

Обновления (3)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/I-TAKE-TODAY-today-framework.git
git@api.gitlife.ru:oschina-mirror/I-TAKE-TODAY-today-framework.git
oschina-mirror
I-TAKE-TODAY-today-framework
I-TAKE-TODAY-today-framework
master