public class Foo{
static class Bar{
}
}
static inner 클래스는 객체 없이도 outter 클래스를 통해서 접근할 수 있다. inner 클래스와는 다르다. inner 클래스는 outter 클래스의 객체를 통해서만 inner 클래스에 접근할 수 있다.
그렇기 때문에 inner 클래스 만을 Bean으로 등록한다는 것은 좀 이상하다. outter 객체를 통해서만 접근할 수 있기 때문이다. 등록될지도 모르겠고 등록되도 어떻게 사용할지도 모르겠다.
하지만 static inner 클래스는 다르다. static inner 클래스는 outter 클래스를 통해서 접근할 뿐 일반적인 static 클래스와 다를바가 없기 때문이다. 그렇기 때문에 static inner 클래스는 빈으로 등록할 수도 있고 사용도 할 수 있다.
public class Foo{
@Component
static class Bar{
}
}