У меня было прекрасно работающее приложение Spring Boot с Java 21. Проблема в том, что теперь я пытаюсь добавить в смесь GraphQL. Библиотеки GraphQL находятся в pom.xml, включая тест Spring GraphQL.
Проблема в том, что когда я пытаюсь запустить GraphQLController и GraphQLControllerTest, он говорит, что для моей CompanyService нет NoSuchBeanDefinition. Без GraphQL все работает нормально.
Во-первых, свойства приложения:
spring.graphql.graphiql.enabled=true
The CompanyService всегда работал и отлично тестировался:
@Service
public class CompanyServiceImpl implements CompanyService {
private CompanyRepository companyRepo;
private CompanyMapper companyMapper;
public CompanyServiceImpl(CompanyRepository companyRepo,
CompanyMapper companyMapper) {
this.companyRepo = companyRepo;
this.companyMapper = companyMapper;
}
Теперь контроллер GraphQL:
@Controller
public class GraphQLCompanyController {
private final CompanyService companyService;
@Autowired
public GraphQLCompanyController(CompanyService companyService) {
this.companyService = companyService;
}
@QueryMapping
public CompanyDTO companyById(@Argument long id) {
return companyService.findDtoById(id);
}
}
Как видите, и в ComnpanyService, и в контроллере GraphQL я использую внедрение через конструктор. Однако в этом контроллере невозможно найти «CompanyService».
Src/main/resources/graphql/schema.graphql определяется следующим образом:
type Query {
companyById(id: ID): Company
}
type Company {
companyId: ID
active: Boolean
companyCode: String
companyName: String
description: String
address1: String
address2: String
city: String
state: String
zip: String
}
Как вы можете видеть из GraphQLCompanyController, когда запрос GraphQL выполняется с простым идентификатором (длинным), я должен вызвать бизнес-службу, которая, в свою очередь, запрашивает базу данных, получает объект, и внутри службы мы используем MapStruct для преобразования из Entity в DTO, а затем мы хотим вернуть этот CompanyDTO в формате GraphQL.
UPDATE:
Как и просили, вот библиотеки Graphql из pom.xml
org.springframework.boot
spring-boot-starter-parent
3.4.2
21
1.18.38
1.6.3
0.2.0
org.springframework.boot
spring-boot-starter-graphql
org.springframework.graphql
spring-graphql-test
test
Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-service
Контроллер Spring GraphQL не видит службу Spring ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1772525350
Anonymous
У меня было прекрасно работающее приложение Spring Boot с Java 21. Проблема в том, что теперь я пытаюсь добавить в смесь GraphQL. Библиотеки GraphQL находятся в pom.xml, включая тест Spring GraphQL.
Проблема в том, что когда я пытаюсь запустить GraphQLController и GraphQLControllerTest, он говорит, что для моей CompanyService нет NoSuchBeanDefinition. Без GraphQL все работает нормально.
Во-первых, свойства приложения:
spring.graphql.graphiql.enabled=true
The CompanyService всегда работал и отлично тестировался:
@Service
public class CompanyServiceImpl implements CompanyService {
private CompanyRepository companyRepo;
private CompanyMapper companyMapper;
public CompanyServiceImpl(CompanyRepository companyRepo,
CompanyMapper companyMapper) {
this.companyRepo = companyRepo;
this.companyMapper = companyMapper;
}
Теперь контроллер GraphQL:
@Controller
public class GraphQLCompanyController {
private final CompanyService companyService;
@Autowired
public GraphQLCompanyController(CompanyService companyService) {
this.companyService = companyService;
}
@QueryMapping
public CompanyDTO companyById(@Argument long id) {
return companyService.findDtoById(id);
}
}
Как видите, и в ComnpanyService, и в контроллере GraphQL я использую внедрение через конструктор. Однако в этом контроллере невозможно найти «CompanyService».
Src/main/resources/graphql/schema.graphql определяется следующим образом:
type Query {
companyById(id: ID): Company
}
type Company {
companyId: ID
active: Boolean
companyCode: String
companyName: String
description: String
address1: String
address2: String
city: String
state: String
zip: String
}
Как вы можете видеть из GraphQLCompanyController, когда запрос GraphQL выполняется с простым идентификатором (длинным), я должен вызвать бизнес-службу, которая, в свою очередь, запрашивает базу данных, получает объект, и внутри службы мы используем MapStruct для преобразования из Entity в DTO, а затем мы хотим вернуть этот CompanyDTO в формате GraphQL.
UPDATE:
Как и просили, вот библиотеки Graphql из pom.xml
org.springframework.boot
spring-boot-starter-parent
3.4.2
21
1.18.38
1.6.3
0.2.0
org.springframework.boot
spring-boot-starter-graphql
org.springframework.graphql
spring-graphql-test
test
Подробнее здесь: [url]https://stackoverflow.com/questions/79644702/spring-graphql-controller-cannot-see-spring-service[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия