10월, 2022의 게시물 표시

Spring Package Private Bean

Spring Boot로 프로젝트 중 특정 클래스를 해당 package에서만 접근해서 사용하려고 아래처럼 package private으로 만들어서 사용하고 있었다. (보안상 클래스명등은 임의 네이밍) class PackagePrivateHelper { public int sum ( int a , int b ) { return a + b ; } } 그런데 해당 클래스에 bean이 주입 되어야 하는 상황이 생겼다. method argument 로 넘길 수도 있지만 해당 클래스를 package private bean으로 만들어서 다른 bean을 그냥 주입 받을 수 있는지 궁금해 졌다. 그래서 아래처럼 그냥 @Component를 붙여 봤는데 원하는 동작을 하네??? (actuator bean 검색(/actuator/beans) 해보면 해당 bean이 생성 되어 있음을 바로 알 수 있다) @Component class PackagePrivateHelper { private final OtherBean otherBean ; public PackagePrivateHelper ( final OtherBean otherBean ) { this . otherBean = otherBean ; } public int sum ( int a , int b ) { return otherBean . sum ( a , b ); } } package private인데 bean이 어떻게 생성될 수 있는지 궁금해서 package private bean에 대해 구글링 해봤는데 관련된 내용이 잘 나오지 않았다. Spring 공식 문서에도 scope에 대한 내용(singleton, prototype, session, 등)만 검색되지 위와 같은 내용은 찾아 보기 어려웠다. 그러다가 같은 궁금증을 가진 사람이 있었던듯 하다. 아래 블로