springboot 프로그램 작성시 @Component 어노테이션이 Person 클래스에 명확하게 추가되었으나 컨테이너에서는 Person 클래스의 Bean 객체를 찾을 수 없다고 표시되었습니다. .
인터넷에서 많은 기존 솔루션을 검색했지만 그 중 아무것도 작동하지 않는다는 것을 발견했습니다. 당시 주요 프로그램이 같은 이름의 폴더에 있었기 때문에 나중에 패키지 검색에 문제가 있을 수 있다는 것을 깨달았습니다. 기본 패키지 검색 규칙에 따라 기본 프로그램 - 기본 프로그램이 있는 패키지의 클래스와 모든 하위 패키지를 검색하면 도메인 패키지 아래의 Person 클래스는 자연스럽게 검색되지 않으므로 @Component 표시되어 있으면 적용되지 않습니다.
메인 프로그램에 Componet 주석 추가
@ComponentScan("com.example")
springboot가 예제의 모든 패키지를 성공적으로 스캔하게 하면 문제가 해결되고 문제가 해결됩니다
구덩이에 들어가면 이 인터페이스의 구현 클래스에 @Autowired 주석을 사용해야 하는 인터페이스가 하나 있습니다. 부주의하여 구현 클래스에 @Component 주석을 추가하지 않아 Spring에서 오류가 보고되었습니다. Spring에 대한 주석이 나타나면 예를 들어 구현 클래스에서 @Autowired 주석을 사용했으며 주석이 달린 클래스는 호출된 구현 클래스도 필요합니다. @Component
@Controller 컨트롤러(인젝션 서비스)는 컨트롤 레이어에 주석을 추가하는 데 사용됩니다. struts의 액션 레이어와 동일합니다.
@Service 서비스(injection dao)
는 서비스 레이어를 표시하는 데 사용되며 주로 비즈니스 로직 처리에 사용됩니다.
@Repository(dao 액세스 구현)
은 다음 작업에 사용됩니다. 데이터 액세스 구성 요소, 즉 DAO 구성 요소를 표시하는 데 사용된다고 할 수도 있는 데이터 액세스 레이어를 표시합니다.
@Component(구성 파일과 동일하게 일반 pojo를 스프링 컨테이너로 인스턴스화)일반적으로 다음을 참조합니다. 즉, 클래스가 다양한 분류에 속하지 않는 경우(@Controller, @Services 등에 속하지 않는 경우) @Component를 사용하여 이 클래스에 주석을 달 수 있습니다.
예제
applicationcontent 등 구성 파일에 쓰는 형식입니다. 클래스에 @comComponent 주석만 추가하면 됩니다
다음은 컴포넌트를 소개하는 스캐닝 컴포넌트입니다
@Component("conversionImpl") //其实默认的spring中的Bean id 为 conversionImpl(首字母小写) public class ConversionImpl implements Conversion { @Autowired private RedisClient redisClient; }
@controller, @service, @repository, @comComponent로 주석이 달린 클래스는 모두 스프링 컨테이너에 포함되어 관리됩니다
위 내용은 SpringBoot @Componet 주석 주입 실패를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!