Class DefaultSecurityService
- All Implemented Interfaces:
SecurityService
예전: Map<String,String> configuredAdaptors 를 받아서
Class.forName(className).getDeclaredConstructor().newInstance() 로 각 Manager 를
리플렉션으로 생성 -> UserManagerAdaptor 처럼 생성자에 의존성 (CredentialService 등)이 필요한
adaptor 는 더 이상 이 방식으로 만들 수 없음.
이후: 각 XxxManagerAdaptor 를 스프링 빈(@Component)으로 두고, DefaultSecurityService 는 그
인터페이스들을 생성자 주입만 받는다. -> 어떤 adaptor 가 어떤 의존성을 갖든(CredentialService 든 뭐든) 스프링
컨테이너가 알아서 만들어주므로 DefaultSecurityService 는 더 이상 "어떻게 만들지" 를 몰라도 된다 (책임 분리).
이 클래스 자체도 @Service 로 스프링 빈이 되므로, 컨슈머(데모/테스트)는
@ComponentScan(basePackages = "com.easydesk.security") 만 켜주면 SecurityService
타입 빈이 정확히 하나(이 클래스) 생긴다. 컨슈머가 별도로 new DefaultSecurityService(...) 를 만들거나
@Bean 등록을 하면 안 된다 (그러면 SecurityServiceConfig 충돌 문제가 재발함
- ConflictingBeanDefinitionException 이 아니라, 이번엔 SecurityService 빈 후보가 2개가 되어
@Autowired 지점에서 NoUniqueBeanDefinitionException 이 남).
- Author:
- Youngho Cho
-
Constructor Summary
ConstructorsConstructorDescriptionDefaultSecurityService(UserManagerAdaptor<User> userManager, GroupManagerAdaptor<Group> groupManager, RoleManagerAdaptor roleManager, PermissionManagerAdaptor permissionManager, EasyDeskModelManager modelManager) 각 manager 를 주입받아 SecurityService 를 생성한다. -
Method Summary
Modifier and TypeMethodDescriptionReturns the configured GroupManager.<T extends SecurityEntityModelManager>
TReturns the configured ModelManager object that can then be casted to the specific model.Returns the configured PermissionManager.Returns the configured RoleManager.Returns the configured UserManager.
-
Constructor Details
-
DefaultSecurityService
public DefaultSecurityService(UserManagerAdaptor<User> userManager, GroupManagerAdaptor<Group> groupManager, RoleManagerAdaptor roleManager, PermissionManagerAdaptor permissionManager, EasyDeskModelManager modelManager) 각 manager 를 주입받아 SecurityService 를 생성한다.- Parameters:
userManager- User managergroupManager- Group managerroleManager- Role managerpermissionManager- Permission managermodelManager- User-Group-Role-Permission 관계를 관리하는 model manager
-
-
Method Details
-
getUserManager
Returns the configured UserManager.- Specified by:
getUserManagerin interfaceSecurityService- Returns:
- An UserManager object
-
getGroupManager
Returns the configured GroupManager.- Specified by:
getGroupManagerin interfaceSecurityService- Returns:
- An GroupManager object
-
getRoleManager
Returns the configured RoleManager.- Specified by:
getRoleManagerin interfaceSecurityService- Returns:
- An RoleManager object
-
getPermissionManager
Returns the configured PermissionManager.- Specified by:
getPermissionManagerin interfaceSecurityService- Returns:
- An PermissionManager object
-
getModelManager
Returns the configured ModelManager object that can then be casted to the specific model.- Specified by:
getModelManagerin interfaceSecurityService- Type Parameters:
T- 사용하는 SecurityEntityModelManager 의 type- Returns:
- An ModelManager object
-