Я хочу запустить приложение Spring Boot со встроенным Tomcat и создать базу данных во время выполнения.Впрыскивание зависимых от автозапуска не удалось в приложении springboot
Я написал следующее application.properties файл:
server.port=1111
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring-boot
spring.datasource.username=root
spring.datasource.password=
Это мой основной класс:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@Configuration
@EnableAutoConfiguration
@ComponentScan("ma.mahmoud.springboot")
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
Для DAO я использую Spring Data, поэтому я создал следующий интерфейс:
public interface PlaceRepository extends CrudRepository<Place, Long> {
Place findByShortName(String shortName);
}
Это интерфейс, который я написал для моего пользования:
public interface PlaceService {
Place getPlaceByShortName(String shortName);
}
И реализация этой услуги, как это:
@Service
public class PlaceServiceImpl implements PlaceService {
@Autowired
private PlaceRepository placeRepository;
public Place getPlaceByShortName(String shortName) {
return placeRepository.findByShortName(shortName);
}
// GETTERS AND SETTERS
}
Изначально мое приложение бросает следующую ошибку при запуске:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'placeServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private ma.mahmoud.springboot.repository.PlaceRepository ma.mahmoud.springboot.service.impl.PlaceServiceImpl.placeRepository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [ma.mahmoud.springboot.repository.PlaceRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
EDIT
Однако , после замены аннотаций на мой основной класс на @SpringBootApplication
и путем коррекции spring.jpa.database-platform
к org.hibernate.dialect.MySQL5Dialect
, я получил следующее сообщение об ошибке:
Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.springframework.core.convert.support.DefaultConversionService.addCollectionConverters(Lorg/springframework/core/convert/converter/ConverterRegistry;)V from class org.springframework.boot.bind.RelaxedConversionService
Я использую следующий pom.xml:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
</parent>
<properties>
<hibernate.version>5.0.3.Final</hibernate.version>
<spring.version>4.2.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
</dependencies>
Я не использую любой конфигурации XML для Spring, так как я использовать аннотации. Я что-то забыл? Или мне нужна еще одна аннотация, чтобы заставить ее работать?
Является ли 'PlaceRepository' аннотированным как хранилище? – Jens
Я пробовал, но он не работает – Mahmoud
Он должен работать, если интерфейс находится в пакете 'ma.mahmoud.springboot', и добавлена аннотация @Repository. – Jens