พิจารณากำหนดชนิดของ bean 'package' ในการกำหนดค่าของคุณ [Spring-Boot]


113

ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

Description:

Parameter 0 of method setApplicant in webService.controller.RequestController required a bean of type 'com.service.applicant.Applicant' that could not be found.


Action:

Consider defining a bean of type 'com.service.applicant.Applicant' in your configuration.

ฉันไม่เคยเห็นข้อผิดพลาดนี้มาก่อน แต่เป็นเรื่องแปลกที่ @Autowire ไม่ทำงาน นี่คือโครงสร้างโครงการ:

ส่วนต่อประสานผู้สมัคร

public interface Applicant {

    TApplicant findBySSN(String ssn) throws ServletException;

    void deleteByssn(String ssn) throws ServletException;

    void createApplicant(TApplicant tApplicant) throws ServletException;

    void updateApplicant(TApplicant tApplicant) throws ServletException;

    List<TApplicant> getAllApplicants() throws ServletException;
}

ผู้สมัคร

@Service
@Transactional
public class ApplicantImpl implements Applicant {

private static Log log = LogFactory.getLog(ApplicantImpl.class);

    private TApplicantRepository applicantRepo;

@Override
    public List<TApplicant> getAllApplicants() throws ServletException {

        List<TApplicant> applicantList = applicantRepo.findAll();

        return applicantList;
    }
}

ตอนนี้ฉันควรจะสามารถแค่ Autowire Applicant และสามารถเข้าถึงได้ แต่ในกรณีนี้จะใช้งานไม่ได้เมื่อฉันเรียกมันใน @RestController:

@RestController
public class RequestController extends LoggingAware {

    private Applicant applicant;

    @Autowired
    public void setApplicant(Applicant applicant){
        this.applicant = applicant;
    }

    @RequestMapping(value="/", method = RequestMethod.GET)
    public String helloWorld() {

        try {
            List<TApplicant> applicantList = applicant.getAllApplicants();

            for (TApplicant tApplicant : applicantList){
                System.out.println("Name: "+tApplicant.getIndivName()+" SSN "+tApplicant.getIndSsn());
            }

            return "home";
        }
        catch (ServletException e) {
            e.printStackTrace();
        }

        return "error";
    }

}

------------------------ อัพเดท 1 -----------------------

ฉันเพิ่ม

@SpringBootApplication
@ComponentScan("module-service")
public class WebServiceApplication extends SpringBootServletInitializer {

    @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(WebServiceApplication.class);
    }

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

}

และข้อผิดพลาดก็หายไป แต่ไม่มีอะไรเกิดขึ้น แต่เมื่อผมออกความเห็นทุกอย่างที่เกี่ยวข้องกับการApplicantในRestControllerก่อนที่จะเพิ่ม@ComponentScan()ก็สามารถที่จะกลับสตริงUIจึงหมายถึงฉันRestControllerกำลังทำงานอยู่ตอนนี้มันจะถูกข้ามไป ฉันน่าเกลียดWhitelabel Error Pageตอนนี้

--------------------- อัพเดท 2 --------------------------- ---

ฉันเพิ่มแพคเกจพื้นฐานของถั่วที่มันบ่น ข้อผิดพลาดในการอ่าน:

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

Description:

Parameter 0 of method setApplicantRepo in com.service.applicant.ApplicantImpl required a bean of type 'com.delivery.service.request.repository.TApplicantRepository' that could not be found.


Action:

Consider defining a bean of type 'com.delivery.request.request.repository.TApplicantRepository' in your configuration.

ฉันเพิ่ม @ComponentScan

@SpringBootApplication
@ComponentScan({"com.delivery.service","com.delivery.request"})
public class WebServiceApplication extends SpringBootServletInitializer {

    @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(WebServiceApplication.class);
    }

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

}

---------------------------- อัพเดท 3 -------------------- -

เพิ่ม:

@SpringBootApplication
@ComponentScan("com")
public class WebServiceApplication extends SpringBootServletInitializer {

ยังคงบ่นเกี่ยวกับApplicantImplชั้นเรียน@Autowiresของฉันซึ่งrepo ของฉันTApplicantRepositoryลงไป


ไฟล์บริบทแอปพลิเคชันของคุณอยู่ที่ไหน หากคุณยังไม่มีคุณควรพิจารณาให้คำแนะนำSpringพร้อมคำอธิบายประกอบเช่น@ComponentScanเพื่อให้ถั่วทั้งหมดพร้อมใช้งาน
Mario Santini

@MarioSantini โปรดดู update 1
Mike3355

ฉันถือว่าหลังจากการอัปเดตแต่ละครั้งมีการเปลี่ยนแปลงในข้อผิดพลาด? ถ้าเป็นไปได้ให้โพสต์โครงสร้างโครงการของคุณและบันทึกข้อผิดพลาด / stacktrace ในแต่ละกรณี .. ควรทราบว่า "ทำไม" จึงเกิดข้อผิดพลาดเหล่านั้นแทนที่จะเป็น "บางสิ่ง" ที่ทำให้ข้อผิดพลาดหายไป จะเป็นประโยชน์สำหรับคนอื่น ๆ ที่เจอปัญหาที่คล้ายกันเช่นกัน
Ameen.M

คำตอบ:


209

อาจเป็นเพราะโครงการถูกแบ่งออกเป็นโมดูลต่างๆ

@SpringBootApplication
@ComponentScan({"com.delivery.request"})
@EntityScan("com.delivery.domain")
@EnableJpaRepositories("com.delivery.repository")
public class WebServiceApplication extends SpringBootServletInitializer {

5
เย็น. โครงการของฉันถูกหารด้วยโมดูลต่างๆ ComponentScan แก้ปัญหาของฉันได้!
kholofelo Maloma

คำอธิบายประกอบ ComponentScan แก้ไขปัญหาของฉัน แต่ @EnableAutoConfiguration ไม่ได้
JPL

ในความเป็นจริง EnableAutoConfiguration กำหนด "แพ็กเกจการค้นหา" พื้นฐานโดยปริยายสำหรับบางรายการและการใช้แพ็กเกจรูทยังอนุญาตให้ใช้คำอธิบายประกอบ ComponentScan โดยไม่จำเป็นต้องระบุแอตทริบิวต์ basePackage และสามารถใช้คำอธิบายประกอบ @SpringBootApplication ได้หากคลาสหลักของคุณอยู่ในแพ็คเกจรูท
jpl

1
โซลูชันนี้ช่วยฉันด้วยข้อผิดพลาดนี้ในเวอร์ชัน 2.0.4
manu muraleedharan

2
ใช่มันเกิดจากการที่โครงการถูกแบ่งออกเป็นโมดูลต่างๆ @EntityScanและ@EnableJpaRepositoriesด้วยชื่อแพ็กเกจที่ถูกต้องเหมาะกับฉัน
Adi Sivasankaran

52

มีโอกาสก็คือ ...
คุณอาจจะหายไป@Service, @Repositoryคำอธิบายประกอบในการเรียนการดำเนินงานของคุณตามลำดับ


2
นี่ควรเป็นคำตอบที่ยอมรับง่ายและตรงประเด็น ขอบคุณ.
nightfury

1
ทำงานให้ฉัน ขอบคุณ.
Okafor T Kosiso

1
ขอบคุณฉันหายไป @Repository annotation
sergodeeva

1
ใช่นี่ควรเป็นคำตอบ คำตอบข้างต้นเป็นเพียงการสันนิษฐานว่าการสแกนล้มเหลวซึ่งผิด
สุมิตรบาดสรา

48

ดูเหมือนว่าชั้นผู้สมัครของคุณจะไม่ถูกสแกน ตามค่าเริ่มต้นแพ็กเกจทั้งหมดที่เริ่มต้นด้วยรูทเนื่องจากคลาสที่คุณใส่ไว้@SpringBootApplicationจะถูกสแกน

สมมติว่าmainคลาสของคุณ"WebServiceApplication" อยู่ใน " com.service.something" คอมโพเนนต์ทั้งหมดที่อยู่ภายใต้ " com.service.something" จะถูกสแกนและ " com.service.applicant" จะไม่ถูกสแกน

คุณสามารถปรับโครงสร้างแพ็กเกจของคุณโดยให้ "WebServiceApplication" อยู่ภายใต้แพ็กเกจรูทและส่วนประกอบอื่น ๆ ทั้งหมดจะกลายเป็นส่วนหนึ่งของแพ็กเกจรูทนั้น หรือคุณสามารถรวม@SpringBootApplication(scanBasePackages={"com.service.something","com.service.application"})ฯลฯ เพื่อให้ส่วนประกอบ "ทั้งหมด" ถูกสแกนและเริ่มต้นในคอนเทนเนอร์สปริง

อัปเดตตามความคิดเห็น

หากคุณมีหลายโมดูลที่กำลังจัดการโดย maven / gradle ความต้องการสปริงทั้งหมดคือแพ็คเกจที่จะสแกน คุณบอกให้สปริงสแกน "com.module1" และคุณมีโมดูลอื่นที่มีชื่อแพ็กเกจรูทเป็น "com.module2" ส่วนประกอบเหล่านั้นจะไม่ถูกสแกน คุณยังสามารถบอกให้สปริงสแกน"com"ซึ่งจะสแกนส่วนประกอบทั้งหมดใน " com.module1." และ " com.module2."


โครงการของฉันคือโครงสร้างเป็นโมดูลที่แตกต่างกัน build.gradleยกตัวอย่างเช่นการให้บริการจะมีโมดูลของตัวเองและ build.gradleชื่อโมดูลเหล่านั้นจะถูกเพิ่มลงdependenciesในโมดูลด้วยวิธีการหลัก ดังนั้นเมื่อคุณเห็น@ComponentScan("module-service")นั่นคือสิ่งที่ฉันคิดว่าจะได้ผล อย่างไรก็ตามภายในmodule-serviceมีหนึ่งแพ็คเกจ คำถามของฉันมันจะเป็นอย่างไร? ฉันแค่ตั้งชื่อแพ็คเกจหรือชื่อโมดูลหรือทั้งสองอย่าง?
Mike3355

ไม่สำคัญว่าแพ็กเกจจะอยู่ในโมดูลที่แตกต่างกันหรือไม่ แพ็คเกจที่ควรสแกนส่วนประกอบควรระบุถึงสปริง คุณสามารถตั้งชื่อแพ็กเกจ "root" ทั้งหมดของโมดูลทั้งหมดของคุณในแอตทริบิวต์ "scanBasePackages" .. และ "แพ็กเกจ" ทั้งหมดที่ต้องกล่าวถึงไม่ใช่โมดูล
Ameen.M

ทำในสิ่งที่คุณพูดและข้อผิดพลาดก็หายไป แต่จะบ่นเกี่ยวกับแพ็คเกจอื่นเท่านั้น ฉันเพิ่มมันลงในรายการ แต่มันจะไม่หายไป ฉันใช้มันดังนี้:@SpringBootApplication(scanBasePackages= {"com.delivery.service","com.delivery.request"})
Mike3355

ฉันเพิ่งทำ@SpringBootApplication(scanBasePackages= "com")และบ่นเกี่ยวกับที่เก็บ JPA ขอบคุณมาก. ฉันไม่รู้ว่า spring จะสแกนแพ็คเกจทั้งหมดที่ขึ้นต้นด้วย "com" หากคุณทำตามข้างต้น
Mike3355

23

โดยทั่วไปจะเกิดขึ้นเมื่อคุณมีแอปพลิเคชันคลาสของคุณใน "แพ็คเกจอื่น" ตัวอย่างเช่น:

com.server
 - Applicacion.class (<--this class have @ComponentScan)
com.server.config
 - MongoConfig.class 
com.server.repository
 - UserRepository

ฉันแก้ปัญหานี้ใน Application.class

@SpringBootApplication
@ComponentScan ({"com.server", "com.server.config"})
@EnableMongoRepositories ("com.server.repository") // this fix the problem

อีกวิธีหนึ่งที่หรูหราน้อยกว่าคือ: ใส่คลาสการกำหนดค่าทั้งหมดไว้ในแพ็คเกจเดียวกัน


2
Infact คุณไม่จำเป็นต้องระบุ@ComponentScanในสถานการณ์ข้างต้น เนื่องจากApplication.class(ซึ่งมี@SpringBootApplicationคำอธิบายประกอบ) ของคุณถูกวางไว้com.serverซึ่งเป็นรูทสำหรับทั้งสองcom.server.configอย่างเช่นcom.server.repositoryกัน
Ameen.M

@ Ameen.M นั่นคือคำถามที่แน่นอนของฉันเหตุใดจึงยังไม่สามารถแก้ไขได้และเหตุใดจึงต้องใช้การสแกนอย่างชัดเจนสำหรับ mongo repos โดยใช้@EnableMongoRepositories?
Karthikeyan

10

ในกรณีของฉันฉันทำผิดพลาดอย่างมาก ฉันใส่@Serviceอินเทอร์เฟซบริการ

ในการแก้ไขฉันใส่@Serviceการใช้งานไฟล์บริการและมันก็ใช้ได้สำหรับฉัน


เหมือนกับฉัน. ขอบคุณ
Manta

7

หากถั่วอยู่ในแพ็คเกจเดียวกันกับที่ @Autowired ก็จะไม่ทำให้เกิดปัญหาดังกล่าว อย่างไรก็ตามถั่วไม่สามารถเข้าถึงได้จากแพ็คเกจที่แตกต่างกันตามค่าเริ่มต้น ในการแก้ไขปัญหานี้ให้ทำตามขั้นตอนเหล่านี้:

  1. นำเข้าสิ่งต่อไปนี้ในคลาสหลักของคุณ:
    import org.springframework.context.annotation.ComponentScan;
  2. เพิ่มคำอธิบายประกอบในคลาสหลักของคุณ:
@ComponentScan(basePackages = {"your.company.domain.package"})
public class SpringExampleApplication {

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

5

ฉันคิดว่าคุณสามารถทำให้มันง่ายขึ้นได้โดยใส่คำอธิบายประกอบที่เก็บของคุณด้วย @Repository จากนั้น Spring Framework จะเปิดใช้งานโดยอัตโนมัติ


4

ในกรณีของฉันสองตัวเลือกนี้ใช้งานได้

  1. ใน//@ComponentScan ({"myapp", "myapp.resources","myapp.services"}) รวมถึงยังมีแพคเกจซึ่งถือApplication.classในรายการหรือ

  2. เพียงเพิ่ม@EnableAutoConfiguration; มันจะจดจำถั่วสปริงทั้งหมดโดยอัตโนมัติ


4

ฉันประสบกับปัญหาที่คุ้นเคยในโครงการหลายโมดูล Maven ของฉันกับ Spring Boot 2 ปัญหาเกี่ยวข้องกับการตั้งชื่อแพ็คเกจของฉันในโมดูลย่อยของ Maven

@SpringBootApplication รวมส่วนประกอบมากมายเช่น - @ComponentScan, @EnableAutoConfiguration, jpa-repositories, json-serialization และอื่น ๆ และเขาวาง @ComponentScan ไว้ใน com ******* แพ็คเกจอวกาศ ส่วนนี้ของแพ็กเกจ com ******* พื้นที่จะต้องเป็นแบบเดียวกันสำหรับโมดูลทั้งหมด

สำหรับการแก้ไข:

  1. คุณควรเปลี่ยนชื่อแพ็คเกจโมดูลทั้งหมด คำอื่น ๆ ที่คุณต้องมีในแพ็คเกจทั้งหมดในโมดูล Maven ทั้งหมด - ส่วนแม่เดียวกัน ตัวอย่างเช่น - com. *******. space
  2. นอกจากนี้คุณต้องย้ายจุดเข้าของคุณไปที่แพ็คเกจนี้ - com. *******. space

3

สิ่งนี้อาจเกิดขึ้นได้หากคุณใช้ Lombok และคุณเพิ่ม@RequiredArgsConstructorและ@NonNullสำหรับฟิลด์ แต่บางฟิลด์ของคุณจะไม่ถูกฉีดเข้าไปในตัวสร้าง นี่เป็นเพียงหนึ่งในความเป็นไปได้ที่จะได้รับข้อผิดพลาดเดียวกัน

พารามิเตอร์ 0 ต้องการ bean ชนิด MissingBeanName ที่ไม่พบ

ในกรณีของฉันข้อผิดพลาดบอกฉันว่าตัวควบคุมมีปัญหาอะไรหลังจากลบ@NonNullแอปพลิเคชันออกก็เริ่มใช้ได้


นี่เป็นข้อผิดพลาดของฉันเช่นกันยกเว้นการ@AllArgsConstructorลบคำอธิบายประกอบและปล่อยให้ java สร้างตัวสร้างที่ว่างเปล่าให้ spring สร้างอินสแตนซ์วัตถุอย่างถูกต้องและฉีดการอ้างอิง
Christian Bartram

2

ฉันค้นหาคำตอบทางออนไลน์ แต่ดูเหมือนว่าจะไม่มีวิธีแก้ปัญหาที่เหมาะสมสำหรับกรณีของฉัน: ในตอนแรกทุกอย่างทำงานได้ดีดังนี้:

@Slf4j
@Service
@AllArgsConstructor(onConstructor = @__(@Autowired))
public class GroupService {
    private Repository repository;
    private Service service;
}

จากนั้นฉันพยายามเพิ่มแผนที่เพื่อแคชบางสิ่งและมันกลายเป็น:

@Slf4j
@Service
@AllArgsConstructor(onConstructor = @__(@Autowired))
public class GroupService {
    private Repository repository;
    private Service service;
    Map<String, String> testMap;
}

ตูม!

Description:

Parameter 4 of constructor in *.GroupService required a bean of type 'java.lang.String' that could not be found.


Action:

Consider defining a bean of type 'java.lang.String' in your configuration.

ฉันออก@AllArgsConstructor(onConstructor = @__(@Autowired))และเพิ่ม@Autowiredสำหรับแต่ละrepositoryและยกเว้นservice Map<String, String>มันก็ใช้งานได้เหมือนเดิม

@Slf4j
@Service
public class SecurityGroupService {
    @Autowired
    private Repository repository;
    @Autowired
    private Service service;
    Map<String, String> testMap;
}

หวังว่านี่อาจเป็นประโยชน์


2

มันใช้งานได้สำหรับฉันหลังจากเพิ่มคำอธิบายประกอบด้านล่างในแอปพลิเคชัน:

@ComponentScan({"com.seic.deliveryautomation.mapper"})

ฉันได้รับข้อผิดพลาดด้านล่าง:

"พารามิเตอร์ 1 ของคอนสตรัคเตอร์ใน bean ของ type mapper ที่ไม่พบ:



2

นอกจากนี้คุณจะได้รับข้อผิดพลาดนี้หากคุณบังเอิญกำหนด bean เดียวกันในสองคลาสที่แตกต่างกัน ที่เกิดขึ้นกับฉัน ข้อความแสดงข้อผิดพลาดทำให้เข้าใจผิด เมื่อฉันนำถั่วส่วนเกินออกปัญหาได้รับการแก้ไขแล้ว




1

ในกรณีของฉันข้อผิดพลาดนี้ปรากฏขึ้นเนื่องจากการนำเข้าของฉันไม่ถูกต้องเช่นใช้สปริงการนำเข้าจะปรากฏขึ้นโดยอัตโนมัติ:

import org.jvnet.hk2.annotations.Service;

แต่ฉันต้องการ:

import org.springframework.stereotype.Service;

1

หากการพึ่งพาคลาสของคุณกำลังจัดการโดย Spring ปัญหานี้อาจเกิดขึ้นหากเราลืมเพิ่มตัวสร้างอาร์กิวเมนต์เริ่มต้น / ว่างเปล่าภายในคลาส POJO ของเรา


1

ข้อผิดพลาดของฉันคือฉันได้รวม:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

แทน:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

1

มันอาจช่วยใครสักคน ฉันมีปัญหาเดียวกันข้อความแสดงข้อผิดพลาดเหมือนกันทุกอย่าง ฉันลองใช้วิธีแก้ปัญหาจากคำตอบอื่นไม่ได้ช่วยจนกว่าฉันจะรู้ว่าถั่วที่ฉันใช้มีชื่อเดียวกับที่ได้รับการป้อนอัตโนมัติ มันเกิดขึ้นท่ามกลาง refactor ดังนั้นฉันจึงต้องเปลี่ยนชื่อคลาสซึ่งส่งผลในเชิงบวก ไชโย


1

ฉันประสบปัญหาเดียวกัน ที่เก็บ Mongo DB ถูกระบุโดย Spring boot แต่ไม่ได้สร้าง Bean สำหรับอินเทอร์เฟซที่เก็บที่ขยายที่เก็บ mongo

ปัญหาในกรณีของฉันคือข้อกำหนดเวอร์ชันที่ไม่ถูกต้องใน maven pom สำหรับ "spring + mango" ฉันได้เปลี่ยน ID กลุ่มของสิ่งประดิษฐ์และทุกอย่างทำงานได้เหมือนเวทมนตร์ ไม่จำเป็นต้องมีคำอธิบายประกอบเนื่องจากสปริงบูตดูแลทุกอย่าง

ในระหว่างการแก้ไขปัญหาของฉันฉันค้นหาวิธีแก้ปัญหาบนเว็บและตระหนักว่าปัญหานี้เกี่ยวข้องกับการกำหนดค่าโครงการทุกคนที่ประสบปัญหานี้ควรตรวจสอบการตั้งค่าโครงการก่อนและเปิดใช้งานการดีบักตั้งแต่ฤดูใบไม้ผลิเพื่อรับรายละเอียดเพิ่มเติมเกี่ยวกับความล้มเหลวและให้ความสำคัญกับ ในขั้นตอนนี้การสร้างล้มเหลว


0

ฉันมีกรณีที่ต้องฉีด RestTemplate ลงในคลาสบริการ อย่างไรก็ตามคลาสบริการไม่สามารถเลือก RestTemplate ได้ สิ่งที่ฉันทำคือสร้างคลาส Wrapper ภายใต้แพ็คเกจเดียวกันกับแอปพลิเคชันหลักและทำเครื่องหมาย Wrapper เป็น Component และกำหนดองค์ประกอบนี้โดยอัตโนมัติในคลาสบริการ แก้ไขปัญหา. หวังว่ามันจะเหมาะกับคุณ


0

ฉันคิดว่าคุณไม่มีคำอธิบายประกอบ @Bean ใน RequestController ของคุณ

เพิ่ม Bean ในไฟล์ของคุณสิ่งนี้ช่วยแก้ปัญหาของ
ฉันได้ฉันได้รับโซลูชันนี้ในขณะที่ฉันเรียนรู้ Spring Boot จากบทช่วยสอน

private Applicant applicant;

@Bean 
public Applicant applicant() { 
    return new Applicant(); 
}

0

การเพิ่ม Spring Boot Data การพึ่งพา JPA Starter ช่วยแก้ปัญหาให้ฉันได้

Maven

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

Gradle

compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '2.2.6.RELEASE'

หรือคุณสามารถไปที่นี่โดยตรง


สิ่งนี้ใช้ไม่ได้กับกรณีนี้ พร้อมต์สำหรับรายละเอียดการเชื่อมต่อกับฐานข้อมูล (ล้มเหลวในการกำหนดค่าแหล่งข้อมูล: ไม่ได้ระบุแอตทริบิวต์ "url" และไม่สามารถกำหนดค่าแหล่งข้อมูลที่ฝังไว้ได้) ในสถานการณ์ที่ฉันต้องการทดสอบด้วยตนเองโดยไม่ต้องโต้ตอบกับฐานข้อมูลสิ่งนี้จะไม่ได้ผล
Thomas Okonkwo

0

หากคุณใช้interfaceคุณสามารถขยายCrudRepository<Applicant,Long>ด้วย@Repositoryคำอธิบายประกอบ


0

ปัญหาอาจปรากฏขึ้นเมื่อคุณใช้ต่อตัวอย่าง@EnableMongoRepositories(YOUR_MONGO_REPOSITORIES_PACKAGE)และในภายหลังคุณเปลี่ยนชื่อแพ็กเกจหรือย้ายไปที่อื่น

บ่อยครั้งที่ต้องเผชิญกับมันภายในโครงการ maven หลายโมดูลและสปริงบูต


0

มีโอกาสที่คุณกำลังพยายามที่จะเป็น@autowired อินเตอร์เฟซก่อนที่จะใช้อินเตอร์เฟซ

ตัวอย่างโซลูชัน:

    **HomeController.java**
    class HomeController{

      @Autowired
      UserService userService;
    .....
    }
----------------------------------------------------------------------
    **UserService.java** 
    public interface UserService {
        User findByUsername(String username);
    .....
    }
-----------------------------------------------------------------------
     **UserServiceImpl.java**
     @Service
     public class UserServiceImpl implements UserService{

         public User findByUsername(String username) {
           return userDao.findByUsername(username);
         }
        ....
      }

<i>This is not italic</i>, and [this is not a link](https://example.com)

0

ลบการกำหนดค่าประเภทคำอธิบายประกอบเช่น @Service ออกจากวิธีการรันเธรด

@Service, @Component

0

ลองกำหนดโครงสร้างโครงการตามที่ระบุด้านล่าง:

ใส่ repo บริการแพ็คเกจทั้งหมดในแพ็คเกจลูกของแพ็คเกจหลัก:

package com.leisure.moviemax;  //Parent package
        
@SpringBootApplication
@PropertySource(value={"classpath:conf.properties"})
    
public class MoviemaxApplication implements CommandLineRunner {
        
package com.leisure.moviemax.repo; //child package

@Repository
public interface UsrRepository extends JpaRepository<UserEntity,String> {

0

เตือนว่าฤดูใบไม้ผลิไม่ได้สแกนโลกมันใช้การสแกนแบบกำหนดเป้าหมายซึ่งหมายถึงทุกอย่างภายใต้แพ็คเกจที่จัดเก็บ springbootapplication ดังนั้นข้อผิดพลาด "พิจารณากำหนดชนิดของ bean" package "ในการกำหนดค่า [Spring-Boot]" ของคุณอาจปรากฏขึ้นเนื่องจากคุณมีอินเทอร์เฟซบริการในแพ็คเกจ springbootapplication ที่แตกต่างกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.