я хочу создать весеннее загрузочное приложение без веб - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу создать весеннее загрузочное приложение без веб-интерфейса. Но я получаю следующую ошибку

@SpringBootApplication
public class TaskApplication implements CommandLineRunner {

    @Autowired
    TaskService taskService;

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

    @Override
    public void run(String... args) throws Exception {

        taskService.print();

    }

}

public interface TaskService  {

    public void print();
}



public class TaskServiceImpl implements TaskService {

    @Override
    public void print() {
        System.out.println("sam");
    }

}

свойства:

spring.datasource.url=jdbc:mysql://localhost:3306/demo?verifyServerCertificate=false&useSSL=false&requireSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root@123
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.main.allow-bean-definition-overriding=true
##spring.jpa.hibernate.ddl-auto=update

ошибка

***************************
APPLICATION FAILED TO START
***************************

Description:

Field taskService in com.example.task.TaskApplication required a bean of type 'com.example.task.service.TaskService' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)

Действие:

Рассмотрим определение bean-компонент типа 'com.example.task.service.TaskService' в вашей конфигурации.

Ответы [ 2 ]

2 голосов
/ 05 февраля 2020

@ M. Дейнм уже объяснил в комментариях. Вам нужно пометить классы аннотацией @Service или @Component для создания пружинного компонента и автоматического подключения в основных методах.

    // mark it with service annotation.
    @Service
    public class TaskServiceImpl implements TaskService {

        @Override
        public void print() {
            System.out.println("sam");
        }

    }

Чтобы понять, почему эти аннотации необходимы здесь, перейдите по этой ссылке: @ Component vs @Repository и @Service in Spring

0 голосов
/ 05 февраля 2020

вам нужно настроить @EnableAutoConfiguration для основного класса, а ваш TaskService должен быть помечен @ Service

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...