Во-первых, у меня есть два разных проекта maven. Я пытаюсь сохранить два модуля: один для «хранилища и сущностей», а второй для служб. Второй проект содержит только один модуль с «контроллерами». Теперь у меня много проблем, во-первых, «Не управляемый тип» для сущностей. Другое дело, если я храню все в одном модуле или даже в разных модулях с одним родительским проектом, это работает безупречно, однако я просто пытаюсь поместить другой пакет в другой проект и модуль
EntityScan, enablejparepositries и все остальные работают, состояние отладки:
name: default
persistence provider classname: null
classloader: sun.misc.Launcher$AppClassLoader@42a57993
excludeUnlistedClasses: true
JTA datasource: null
Non JTA datasource: HikariDataSource (null)
Transaction type: RESOURCE_LOCAL
PU root URL: file:/F:/Software/MavenRepo/com/company/repo/1.0.0/repo-1.0.0.jar
Shared Cache Mode: UNSPECIFIED
Validation Mode: AUTO
Jar files URLs []
Managed classes names [
com.company.sitemap.repo.Page]
Mapping files names []
Properties []
Однако, наконец, он сообщает Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.company.sitemap.repo.Page
и показывает ошибку при запуске приложения. Можете ли вы помочь мне с этим?
Вот мой файл класса приложения
package com.company.sitemap;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import com.company.sitemap.repo.SitemapRepoConfig;
import com.company.sitemap.service.SitemapConfig;
@SpringBootApplication
@EnableJpaRepositories(basePackageClasses = { SitemapRepoConfig.class })
@EntityScan(basePackages = {"com.nie.learn.sitemap.repo"})
@ComponentScan(basePackageClasses = { SitemapConfig.class, SitemapRepoConfig.class })
public class Sitemap extends SpringBootServletInitializer {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(Sitemap.class, args);
for (String name : applicationContext.getBeanDefinitionNames()) {
System.out.println(name);
}
}
}
Класс сущности находится в другом проекте и модуле. Скажем, Project-libs и модуль module-repo. Я пытаюсь добавить это как maven зависимость. Файл сущности выглядит следующим образом:
package com.company.sitemap.repo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Page {
Конфигурация репо для сканирования классов репо.
package com.company.sitemap.repo;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SitemapRepoConfig {
}
Конфигурация сервиса для сканирования классов сервиса:
package com.company.sitemap.service;
import javax.validation.constraints.NotNull;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.company.sitemap.repo.PageRepository;
@Configuration
public class SitemapConfig {
@Bean
@NotNull
public SitemapService service(@NotNull PageRepository repo) {
return new SitemapService(repo);
}
}