Как использовать Rest Service при использовании Spring Boot & Spring Data Jpa - PullRequest
0 голосов
/ 28 апреля 2019

Я работаю над приложением весенней загрузки для службы отдыха с использованием данных весны jpa.Я следовал за инструкторами и читал много ответов, но не смог починить службу отдыха.

Вот application.class

package tr.kasim.Application;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;


@SpringBootApplication
@EnableJpaRepositories("tr.kasim.Dao")
@EntityScan("tr.kasim.Model")
@ComponentScan({"tr.kasim.Service", "tr.kasim.Application" })
public class Application {

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

}

Вот `restcontroller.class

package tr.kasim.Controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import tr.kasim.Service.PersonelService;
import tr.kasim.Model.Personel;


@RestController
public class STRestController {

@Autowired
public PersonelService personelService;

@RequestMapping(value = "/api/personels", method = RequestMethod.GET)
public ResponseEntity<List<Personel>> getPersonels(){
    List<Personel> personels = personelService.findAll();
    return ResponseEntity.ok().body(personels);
}

}

`

Вот Service.class`

package tr.kasim.Service;

 import java.util.List;

import tr.kasim.Model.Personel;

public interface PersonelService {

List<Personel> findAll();
}

`

Вот ServiceImplemantion.class

package tr.kasim.Service;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import tr.kasim.Dao.PersonelDao;
import tr.kasim.Model.Personel;

@Service
public class PersonelServiceImpl implements PersonelService {

@Autowired
private PersonelDao personelDao;

@Override
@Transactional
public List<Personel> findAll() {

    return personelDao.findAll();
}

}

Вот Dao.class

    package tr.kasim.Dao;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import tr.kasim.Model.Personel;

@Repository
public interface PersonelDao extends JpaRepository<Personel, Long> {

List<Personel> findAll();
}

Наконец, вот мое application.properties

#MySql Connection
spring.datasource.url=jdbc:mysql://localhost:3306/exampleproject?verifyServerCertificate=false&useSSL=true
spring.datasource.username=root
spring.datasource.password=*******
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#Jpa/Hibernate
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

#Logging
logging.file=staffTracking.log
logging.level.org.springframework.web=debug

Я не уверен насчет componentScan.Когда я читал ответы, я обнаружил, что кто-то упомянул об этом, но я попытался, и я все еще ничего не получил.Пожалуйста, покажи мне, где я потерпел неудачу.С наилучшими пожеланиями.

Я обновил Application.class, теперь я могу развернуть проект, но служба покоя все еще не работает.

1 Ответ

0 голосов
/ 28 апреля 2019

Как ты попробовал ComponentScan?Проблема здесь заключается в том, что у вас есть структура пакета, подобная этой:

tr.kasim.Application
  - Application.java
tr.kasim.Service
  - PersonelService.java
  - PersonelServiceImpl.java
tr.kasim.Dao
 - PersonelDao.java

Теперь, поскольку mainClass находится в tr.kasim.Application, он будет сканировать определения бинов внутри этого пакета (или подпакета вtr.kasim.Application).Итак,

  • либо вы перемещаете mainClass в родительский пакет, такой как tr.kasim, либо

  • используете @ComponentScan({ "tr.kasim.Dao", "tr.kasim.Service", "tr.kasim.Application" }) ии так далее.

- Обновление -

Исходя из приведенного выше обсуждения, я бы предложил выбрать первый вариант, так как это уменьшает усилия по ручному включению сканированиядля сущности, хранилища и т. д.

...