Package com.easydesk.web.config
Class SecurityServiceConfig
java.lang.Object
com.easydesk.web.config.SecurityServiceConfig
@Configuration
@ComponentScan(basePackages="com.easydesk.security,com.easydesk.modules,com.easydesk.pipeline,com.easydesk.spring")
public class SecurityServiceConfig
extends Object
앱 구동 시 내장 HSQLDB -> Torque 초기화 순서로 빈을 구성하고,
com.easydesk.security, com.easydesk.modules.security 두 패키지를 컴포넌트 스캔해서
adaptor들과 SecurityService 구현체들을 스프링이 직접 구성/주입하게 한다.
2026-09-19 추가: com.easydesk.pipeline, com.easydesk.spring 두 패키지도 스캔 목록에 더했다.
원래 Turbine 의 AnnotationProcessor 로 서비스를 주입하던 core/workflow 쪽(WorkflowFactory,
AddItemValve/UpdateItemValve 등)을 Spring 의 AutowireCapableBeanFactory 로 옮기면서, 그
대체 진입점인 SpringBeanFactoryHolder(com.easydesk.spring)와 그게 주입해 줄 PipelineService
구현체인 DefaultPipelineService(com.easydesk.pipeline)가 실제로 빈이 되어야 하기 때문이다 -
이전까지는 둘 다 easydesk-spring-pipeline 자신의 테스트에서만 컴포넌트 스캔됐고, 이 데모 앱
컨텍스트에는 전혀 등록된 적이 없었다.
예전엔 adaptor를 문자열 클래스명 + 리플렉션(configuredAdaptors() Map,
DefaultSecurityService#setConfiguredAdaptors)으로 만들었는데, UserManagerAdaptor가
CredentialService처럼 생성자 의존성이 필요해지면서 그 방식으로는 더 이상 못 만든다.
그래서 adaptor(@Component)와 SecurityService 구현체(@Service, 생성자로 UserManager 등
인터페이스를 주입받음)를 라이브러리 쪽에서 전부 스프링 빈으로 바꿨고, 여기서는
컴포넌트 스캔만 켜준다.
주의: 이 스캔 범위에는 SecurityService 구현체가 DefaultSecurityService
(easydesk-spring-security, 빈 이름 "defaultSecurityService")와 ModuleSecurityService
(easydesk-spring-modules, 빈 이름 "moduleSecurityService") 두 개 있어서, SecurityService
타입 빈도 두 개 등록된다 ("빈이 두 개" 문제는 여전히 있다 — 사라진 게 아니라
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classTorque 초기화 순서를 다른 곳에서 강제로 잡아야 할 때를 대비해 남겨둔 마커 빈 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static voidloadOM()static voidtorqueInitializer(EmbeddedHsqlDatabase embeddedHsqlDatabase) embeddedHsqlDatabase 빈이 먼저 만들어진 뒤 Torque 를 초기화하도록 메서드 파라미터로 의존관계를 명시했다 (Spring이 생성 순서를 보장).
-
Constructor Details
-
SecurityServiceConfig
public SecurityServiceConfig()
-
-
Method Details
-
embeddedHsqlDatabase
- Throws:
Exception
-
torqueInitializer
@Bean public SecurityServiceConfig.TorqueInitializer torqueInitializer(EmbeddedHsqlDatabase embeddedHsqlDatabase) throws Exception embeddedHsqlDatabase 빈이 먼저 만들어진 뒤 Torque 를 초기화하도록 메서드 파라미터로 의존관계를 명시했다 (Spring이 생성 순서를 보장). 예전엔 securityService() 빈이 이 TorqueInitializer를 파라미터로 받아서 "Torque 초기화 후에 SecurityService 생성"을 강제했는데, 이제 SecurityService 구현체들(DefaultSecurityService, ModuleSecurityService)은 컴포넌트 스캔으로 만들어지기 때문에 그 연결고리가 없다. 대신 이 빈도 다른 싱글톤 빈들과 마찬가지로 컨텍스트 refresh 시점(=애플리케이션이 실제 요청을 받기 전)에 즉시(eager) 생성되고, adaptor들은 생성자 시점엔 Torque를 건드리지 않고 실제 요청 처리 시점에만 사용하므로 순서 문제는 없다. 다만 만약 어떤 adaptor가 생성자에서 바로 Torque/Peer 클래스를 호출한다면 이 가정이 깨지니 주의.- Throws:
Exception
-
registIdBroker
- Throws:
TorqueException
-
loadOM
- Throws:
Exception
-