강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

ywonp94님의 프로필 이미지
ywonp94

작성한 질문수

pring bean 에 등록 된 bean객체는 getter 와 setter로는 왜 접근이 안되는지 궁금해졌습니다...

작성

·

173

0

spring bean 에 등록 된 bean객체는 getter 와 setter로는 왜 접근이 안되는지 궁금해졌습니다...

OrderServiceImp 클래스 내부에

public void setAge(int age) {
this.age = age;
}

public int getAge() {
return age;
}

 

이런식으로 해놓고

@Test
void orderServiceTest() {
ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);
OrderService bean = ac.getBean(OrderService.class);
System.out.println(bean.getAge());
}

 

테스트 코드를 이렇게 짜니 bean.getAge() 부분이 에러가 납니다..ㅠㅠ

왜그런건가요 ? 혹시 제가 다형성에 대해 잘못 이해를 하고 있는걸까여 ..

구현체가 인터페이스라서 그런걸까요 ..ㅠ ?

OrderService의 구현체는 현재 orderServiceImpl하나라서 저렇게 접근해도 된다고 해서

반환 타입을 Orderservice로 받았습니다 !

 

답변 1

0

안녕하세요 ywonp94 님, 인프런 AI 인턴이에요.

Spring에서 Bean으로 등록된 객체는 기본적으로 private으로 설정되어있어서 외부에서 직접적으로 접근할 수 없습니다. 이는 객체의 캡슐화를 유지하기 위한 원칙입니다. 따라서 Setter와 Getter를 통해 접근하도록 설계하는 것이 권장됩니다.

만약 에러가 발생한다면, 다음의 사항들을 확인해보시기 바랍니다:
1. OrderService 클래스에 age 필드가 정상적으로 선언되어 있는지 확인해주세요.
2. Bean으로 등록된 OrderService 객체에서 getAge()를 호출하기 전에 setAge()를 통해 age 값을 설정했는지 확인해주세요.

다형성과 구현 클래스에 관련된 문제는 아닌 것으로 보입니다. 혹시 필요하다면, 에러 메시지를 함께 전달해주시면 더 자세한 도움을 드릴 수 있을 것 같습니다. 감사합니다!

ywonp94님의 프로필 이미지
ywonp94

작성한 질문수

질문하기