Java Portal | Программирование
12.6K subscribers
1.13K photos
92 videos
36 files
1K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Камень/ножницы/бумага, реализовано на Java25 в http://Game.java

void main() {
IO.println("rock/paper/scissors:");
var u = IO.readln(); // читаем ввод пользователя
if (u.equals("exit")) return; // выходим, если введено "exit"
var c = "rock,paper,scissors".split(","); // список вариантов
var i = List.of(c).indexOf(u); // индекс выбранного пользователем варианта
if (i < 0) return; // если введено что-то не из списка — выходим
var j = new Random().nextInt(3); // случайный выбор компьютера
IO.println("Computer: " + c[j]);
IO.println(i == j ? "Tie!" : (i == (j + 1) % 3 ? "You win!" : "Computer wins!"));
}



👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👀76🔥3
👩‍💻 Ищем Java разработчиков. Удалёнка, релокейт платим много!

Специально для Вас, собираем лучшие вакансии для Java разработчиков с прямыми контактами в Telegram на канале @it_match_java

Подпишись чтобы не упустить свой шанс получить лучший оффер!

➡️ Посмотреть вакансии
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔31👍1🔥1💊1
Spring Boot: можно использовать @SpringBootApplication(exclude = …), чтобы отключить определённые классы автоконфигурации.

Один из возможных поводов сделать это когда у тебя есть своя конфигурация, которая конфликтует со стандартной.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🤔1
Если нужно внедрить сгруппированные конфигурационные параметры в классы, можно использовать аннотацию @ConfigurationProperties вместо @Value

@Value обычно применяют для внедрения отдельных свойств:

@Value("${app.name}")
private String appName;


@ConfigurationProperties лучше подходит для более сложных, сгруппированных настроек:

email:
host: smtp.example.com
port: 587
username: user@example.com
password: secret

@Component
@ConfigurationProperties(prefix = "email")
public class EmailProperties {

private String host;
private int port;
private String username;
private String password;

// геттеры и сеттеры
}

@Service
public class EmailService {

private final EmailProperties emailProperties;

public EmailService(EmailProperties emailProperties) {
this.emailProperties = emailProperties;
}
}


👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
Разбор логов при запуске Spring Boot

Когда запускаешь Spring Boot и в консоли пролетают тонны логов - вот что это всё значит:

1. Spring Boot Banner

Сначала появляется ASCII-баннер с версией Spring Boot:

:: Spring Boot :: (v3.3.4)

Он показывает версию приложения и данные JVM.

2. Стартовая информация

Пример строки:

Starting DemoApplication using Java 21 on LAPTOP with PID 4523

Отображает главный класс, версию Java и PID процесса.

3. Активные профили

Если видишь:

The following profiles are active: dev

Значит, загружается application-dev.yml — удобно для конфигов под разные окружения.

4. Инициализация ApplicationContext

Spring создаёт ApplicationContext, сканирует компоненты, конфигурации и автоконфигурации.

Пример лога:

Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext

5. Фаза автоконфигурации

Spring Boot подхватывает AutoConfiguration-классы и автоматически связывает бины.

Пример:

Tomcat initialized with port(s): 8080 (http)

Хочешь увидеть детали — запускай с флагом --debug или --trace.

6. Создание и инициализация бинов

Типичный лог:

Initializing Spring DispatcherServlet 'dispatcherServlet'

Это значит, что веб-слой готов принимать запросы.

7. Запуск веб-сервера

В зависимости от стека:

- Tomcat — для Spring MVC
- Netty — для WebFlux

Пример:

Tomcat started on port(s): 8080 (http) with context path ''

8. Метрики старта

Spring Boot 3.x добавил StartupStep-метрики, чтобы отслеживать, на что уходит время при старте (видно, если включён Actuator).

9. Приложение готово

Финальный лог:

Started DemoApplication in 2.345 seconds (JVM running for 2.789)

Контекст полностью загружен, приложение работает.

Как посмотреть всё в реальном времени

Запусти приложение с флагом --debug:

java -jar app.jar --debug

Ты получишь детализированный отчёт об автоконфигурации и последовательности запуска — удобно для отладки и понимания, что реально происходит при старте.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64