org. springframework.콩류.Unsupplicated Dependency Exception:이름이 'demoRestController'인 콩을 생성하는 동안 오류가 발생했습니다.
나는 스프링에 처음 와서 학습신청을 하려고 하는데 자동배선에 문제가 생겨서 코드를 추가하고 있어.저는 스프링 부츠 작업을 하고 있습니다.
스프링 부트 코드
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
LoginBean.java
@Service
@Component
public class LoginBean {
private String userId;
private String pwd;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
DemoRestController.java
@RestController
@EnableAutoConfiguration
@RequestMapping("/demo")
@Component
public class DemoRestController {
private final LoginBean loginBean;
@Autowired
public DemoRestController(LoginBean loginBean) {
this.loginBean=loginBean;
}
@RequestMapping(value = "/login/{id},{pwd}", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody LoginBean loginService(@PathVariable String id, @PathVariable String pwd) {
//LoginBean loginBean = new LoginBean();
loginBean.setUserId(id);
loginBean.setPwd(pwd);
return loginBean;
}
@Autowired를 동작시키기 위해 다음과 같은 시나리오를 시도했습니다.
- @LoginBean loginBean에 자동 접속.
- 컨트롤러 클래스에서 LoginBean의 getter setter를 만들고 자동배선된 setter를 작성한다.
- 컨트롤러 컨스트럭터 생성 및 자동 전원 투입(상기 코드 참조)
아래는 제가 받고 있는 오류입니다.
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'demoRestController': Unsatisfied dependency expressed through constructor argument with index 0 of type [com.ag.digital.demo.bean.LoginBean]: No qualifying bean of type [com.ag.digital.demo.bean.LoginBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.ag.digital.demo.bean.LoginBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) ~[spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) ~[spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
at com.ag.digital.demo.boot.DemoApplication.main(DemoApplication.java:14) [classes/:na]
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.ag.digital.demo.bean.LoginBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 19 common frames omitted
당신의.DemoApplication
클래스는com.ag.digital.demo.boot
패키지 및 고객님의LoginBean
클래스는com.ag.digital.demo.bean
패키지.디폴트 컴포넌트(주석이 있는 클래스)@Component
)는 메인 어플리케이션클래스의 같은 패키지 또는 서브패키지에 포함되어 있는 경우에 검출됩니다.DemoApplication
즉,LoginBean
찾을 수 없기 때문에 종속성 주입에 실패합니다.
문제를 해결하려면 몇 가지 방법이 있습니다.
- 이동
LoginBean
안으로com.ag.digital.demo.boot
또는 하위 그룹입니다. - 를 사용하여 컴포넌트를 스캔할 패키지를 구성합니다.
scanBasePackages
의 특성@SpringBootApplication
그것은 해야 할 것이다DemoApplication
.
문제를 일으키지는 않지만 귀하가 게시한 코드에 맞지 않는 몇 가지 다른 사항:
@Service
의 전문화입니다.@Component
둘 다 안 입어도 돼요LoginBean
- 유사하게,
@RestController
의 전문화입니다.@Component
둘 다 안 입어도 돼요DemoRestController
DemoRestController
에게는 드문 장소이다@EnableAutoConfiguration
이 주석은 보통 메인 어플리케이션클래스에서 볼 수 있습니다).DemoApplication
) 직접 또는 경유로@SpringBootApplication
이 조합은@ComponentScan
,@Configuration
,그리고.@EnableAutoConfiguration
.
내게는 그런 일이 있었다.DogController
자동배선된DogService
자동배선된DogRepository
.Dog
이전에는 필드가 있던 클래스name
근데 제가 바꿨어요.coolName
에서의 메서드는 변경되지 않았습니다.DogRepository
:Dog findDogByName(String name)
그 방법을 로 변경합니다.Dog findDogByCoolName(String name)
이제 효과가 있어요.
제 경우 유닛 테스트 중에 오류가 발생하여 메인클래스뿐만 아니라 테스트클래스 고유의 ComponentScan 주석에서 새로운 패키지를 추가해야 합니다.
com.bpg.csp.cbs.common.util
왜냐하면 이것은 내가 내 프로젝트에 추가한 새로운 패키지이기 때문이다.전체 테스트 구성 코드의 일부를 아래에 나타냅니다.
@Profile("junit")
@Configuration
@ComponentScan(basePackages = {
"com.bpg.services.booking.gds.adapter.impl.config",
"com.bpg.csp.cbs.common.util"
})
public class TestConfiguration
{
}
또, 준거 노트북(회사 노트북)을 실행하고 있는 경우는, 「mysql - u [username ] -p」명령어로 mysql 를 기동해, 로그인하고 나서 패스워드를 입력해 주세요.
통신, 링크, 패킷 수신 에러의 대부분은, 이것에 의해서 해결됩니다.
이는 모든 jdbc 및 mysql 드라이버가 VPN 위에 구축되어 있기 때문에 아티팩토리에서 중요한 jars 파일 및 의존관계를 다운로드하기 위해서는 반드시 VPN에 연결해야 하기 때문입니다.
언급URL : https://stackoverflow.com/questions/37214538/org-springframework-beans-factory-unsatisfieddependencyexception-error-creating
'source' 카테고리의 다른 글
제출 후 양식 값 지우기 Ajax (0) | 2023.04.04 |
---|---|
angularjs와 같은 프레임워크를 사용할 경우 접근성에 미치는 영향은 무엇입니까? (0) | 2023.04.04 |
컨테이너 명령을 호출할 수 없습니다. (0) | 2023.04.04 |
너무 많은 리액트 컨텍스트 제공자 (0) | 2023.04.04 |
Angular에서 정의된 text/ng-template를 사용하는 방법JS 지시어 (0) | 2023.04.04 |