[SPRING] 설정에서 'service'타입의 bean 정의 [Spring boot]
SPRING설정에서 'service'타입의 bean 정의 [Spring boot]
메인 클래스를 실행하면 오류가 발생합니다.
오류:
Action:
Consider defining a bean of type 'seconds47.service.TopicService' in your configuration.
Description:
Field topicService in seconds47.restAPI.topics required a bean of type 'seconds47.service.TopicService' that could not be found
TopicService 인터페이스 :
public interface TopicService {
TopicBean findById(long id);
TopicBean findByName(String name);
void saveTopic(TopicBean topicBean);
void updateTopic(TopicBean topicBean);
void deleteTopicById(long id);
List<TopicBean> findAllTopics();
void deleteAllTopics();
public boolean isTopicExist(TopicBean topicBean);
}
제어 장치:
@RestController
public class topics {
@Autowired
private TopicService topicService;
@RequestMapping(path = "/new_topic2", method = RequestMethod.GET)
public void new_topic() throws Exception {
System.out.println("new topic JAVA2");
}
}
구현 클래스 :
public class TopicServiceImplementation implements TopicService {
@Autowired
private TopicService topicService;
@Autowired
private TopicRepository topicRepository;
@Override
public TopicBean findById(long id) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public TopicBean findByName(String name) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void saveTopic(TopicBean topicBean) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void updateTopic(TopicBean topicBean) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void deleteTopicById(long id) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public List<TopicBean> findAllTopics() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void deleteAllTopics() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public boolean isTopicExist(TopicBean topicBean) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
클래스의 나머지도 정의됩니다. 메인 클래스에서 componentScan을 선언 했음에도 불구하고 왜 던지는지 모르겠습니다.
주 수업 :
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class })
@ComponentScan(basePackages = {"seconds47"})
@EnableJpaRepositories("seconds47.repository")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
나는 내 패키지를 이렇게 :
seconds47
seconds47.beans
seconds47.config
seconds47.repository
seconds47.restAPI
seconds47.service
해결법
-
==============================
1.클래스는 @Component 어노테이션 또는 그 파생물 (예 : @Service, @Repository 등)이 컴포넌트 스캔에 의해 Spring 빈으로 인식되도록해야합니다. 따라서 @Component를 클래스에 추가하면 문제가 해결됩니다.
클래스는 @Component 어노테이션 또는 그 파생물 (예 : @Service, @Repository 등)이 컴포넌트 스캔에 의해 Spring 빈으로 인식되도록해야합니다. 따라서 @Component를 클래스에 추가하면 문제가 해결됩니다.
-
==============================
2.TopicService는 Service 클래스이므로 @Service로 주석을 달아 Spring이이 bean을 자동으로 호출하도록해야한다. 이렇게 :
TopicService는 Service 클래스이므로 @Service로 주석을 달아 Spring이이 bean을 자동으로 호출하도록해야한다. 이렇게 :
@Service public class TopicServiceImplementation implements TopicService { ... }
이렇게하면 문제가 해결됩니다.
-
==============================
3.당신은 그 자체로 빈을 주입하려고 시도하고있다. 그것은 분명히 작동하지 않을 것입니다.
당신은 그 자체로 빈을 주입하려고 시도하고있다. 그것은 분명히 작동하지 않을 것입니다.
TopicServiceImplementation은 TopicService를 구현합니다. 이 클래스는`TopicService '를 (필드에 의해) 자동으로 시도합니다. 그래서 본질적으로 자신에게 주입하는 맥락을 요구하고 있습니다.
오류 메시지의 내용을 편집 한 것 같습니다. 필드 topicService in seconds47.restAPI.topics는 클래스가 아닙니다. 민감한 정보를 숨기려면 다른 사람들이 귀하를 도와주기가 더 어려워 지므로주의하십시오.
실제 문제로 되돌아 가면, TopicService 자체를 주입하는 것이 당신 편이라고 생각합니다.
-
==============================
4.나는 손상된 jar 파일을 대체하여 해결했습니다.
나는 손상된 jar 파일을 대체하여 해결했습니다.
그러나 손상된 jar 파일을 찾으려면 세 가지 IDE-1) Intellij 아이디어 2) NetBeans 3) Eclipse에서 응용 프로그램을 실행해야합니다.
Netbeans가 손상된 항아리의 최대 개수에 대한 정보를 나에게주었습니다. Netbeans에서는 실행과 함께 빌드 된 옵션을 사용하여 프로젝트를 마우스 오른쪽 버튼으로 클릭 한 후 손상된 항아리에 대해 자세히 알아 봅니다.
이러한 오류의 근본 원인을 파악하는 데 15 시간 이상이 걸렸습니다. 희망이 사람을 도웁니다.
-
==============================
5.당신은
당신은
scanBasePackages = { "com.exm.java" }
서비스에 경로를 추가하려면 (서비스에 주석을 첨부 한 후)
from https://stackoverflow.com/questions/41663652/consider-defining-a-bean-of-type-service-in-your-configuration-spring-boot by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 데이터의 기본 정렬 순서 변경 findAll () 메서드 (0) | 2019.02.13 |
---|---|
[SPRING] 내 맞춤 Wicket 모델 클래스에 Spring bean을 주입하려면 어떻게해야합니까? (0) | 2019.02.13 |
[SPRING] 신뢰할 수있는 인증서 항목은 비밀번호로 보호되지 않습니다. Spring SAML (0) | 2019.02.13 |
[SPRING] Spring을 멈춘다 일정 시간이 지나면 멈춘다. (0) | 2019.02.13 |
[SPRING] 스프링 데이터 JPA 감사를 orm.xml 파일없이 (JavaConfig를 대신 사용하여) 사용할 수 있습니까? (0) | 2019.02.13 |