SpringApplication.run() без загрузки ⇐ JAVA
-
Гость
SpringApplication.run() без загрузки
Я новичок в Spring. В настоящее время я пытаюсь запустить очень простой проект, чтобы начать изучать Spring и понимать IoC и внедрение зависимостей. Сначала я создал простой проект Spring Boot, и он работал, но теперь я пытаюсь сделать это без загрузки, потому что хочу лучше понять, что происходит. Я не понимаю, как это сделать (полный урок ниже):
SpringApplication.run(TestSpringApplication.class, args);
Я пытался это сделать:
Приложение TestSpringApplication = новое TestSpringApplication(); app.run(аргументы); Но внутри метода run() @Autowired messageRepository имеет значение null. Я предполагаю, что это потому, что я создал свое TestSpringApplication, используя new вместо applicationContext.getBean()? Но как я могу получить доступ/получить контекст приложения в моем статическом основном методе?
Простите, если это может показаться тривиальным, я начинаю почти с нуля, и мне очень трудно найти простые учебные пособия.
Вот что я пытаюсь сделать, но не получается:
пакет com.cypherf; импортировать com.cypherf.model.Message; импортировать com.cypherf.repository.MessageRepository; импортировать com.cypherf.service.MessageService; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.context.ApplicationContext; импортировать org.springframework.context.annotation.ComponentScan; импортировать org.springframework.context.annotation.Configuration; @Конфигурация @ComponentScan общественный класс TestSpringApplication { @Autowired частный контекст ApplicationContext; @Autowired частный репозиторий сообщений messageRepository; @Autowired частная служба сообщений messageService; public static void main(String[] args) { Приложение TestSpringApplication = новое TestSpringApplication(); app.run(аргументы); } public void run(String... args) { messageRepository.save(new Message("Сообщение первое"); messageRepository.save(new Message("Сообщение второе"); messageRepository.save(new Message("Сообщение второе"); messageService.printAllMessages(); } } Вот мой предыдущий класс с Spring Boot, который работает:
пакет com.cypherf; импортировать com.cypherf.model.Message; импортировать com.cypherf.repository.MessageRepository; импортировать com.cypherf.service.MessageService; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.boot.CommandLineRunner; импортировать org.springframework.boot.SpringApplication; импортировать org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication публичный класс TestSpringApplication реализует CommandLineRunner { @Autowired частный репозиторий сообщений messageRepository; @Autowired частная служба сообщений messageService; public static void main(String[] args) { SpringApplication.run(TestSpringApplication.class, args); } public void run(String... args) выдает исключение { messageRepository.save(new Message("Сообщение первое"); messageRepository.save(new Message("Сообщение второе"); messageRepository.save(new Message("Сообщение второе"); messageService.printAllMessages(); } }
Я новичок в Spring. В настоящее время я пытаюсь запустить очень простой проект, чтобы начать изучать Spring и понимать IoC и внедрение зависимостей. Сначала я создал простой проект Spring Boot, и он работал, но теперь я пытаюсь сделать это без загрузки, потому что хочу лучше понять, что происходит. Я не понимаю, как это сделать (полный урок ниже):
SpringApplication.run(TestSpringApplication.class, args);
Я пытался это сделать:
Приложение TestSpringApplication = новое TestSpringApplication(); app.run(аргументы); Но внутри метода run() @Autowired messageRepository имеет значение null. Я предполагаю, что это потому, что я создал свое TestSpringApplication, используя new вместо applicationContext.getBean()? Но как я могу получить доступ/получить контекст приложения в моем статическом основном методе?
Простите, если это может показаться тривиальным, я начинаю почти с нуля, и мне очень трудно найти простые учебные пособия.
Вот что я пытаюсь сделать, но не получается:
пакет com.cypherf; импортировать com.cypherf.model.Message; импортировать com.cypherf.repository.MessageRepository; импортировать com.cypherf.service.MessageService; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.context.ApplicationContext; импортировать org.springframework.context.annotation.ComponentScan; импортировать org.springframework.context.annotation.Configuration; @Конфигурация @ComponentScan общественный класс TestSpringApplication { @Autowired частный контекст ApplicationContext; @Autowired частный репозиторий сообщений messageRepository; @Autowired частная служба сообщений messageService; public static void main(String[] args) { Приложение TestSpringApplication = новое TestSpringApplication(); app.run(аргументы); } public void run(String... args) { messageRepository.save(new Message("Сообщение первое"); messageRepository.save(new Message("Сообщение второе"); messageRepository.save(new Message("Сообщение второе"); messageService.printAllMessages(); } } Вот мой предыдущий класс с Spring Boot, который работает:
пакет com.cypherf; импортировать com.cypherf.model.Message; импортировать com.cypherf.repository.MessageRepository; импортировать com.cypherf.service.MessageService; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.boot.CommandLineRunner; импортировать org.springframework.boot.SpringApplication; импортировать org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication публичный класс TestSpringApplication реализует CommandLineRunner { @Autowired частный репозиторий сообщений messageRepository; @Autowired частная служба сообщений messageService; public static void main(String[] args) { SpringApplication.run(TestSpringApplication.class, args); } public void run(String... args) выдает исключение { messageRepository.save(new Message("Сообщение первое"); messageRepository.save(new Message("Сообщение второе"); messageRepository.save(new Message("Сообщение второе"); messageService.printAllMessages(); } }
Мобильная версия