본문으로 건너뛰기
ElastiCORE 3.0 은 릴리스 후보(RC)입니다: Maven Central 의 3.0.261022-rc1. 2.2 라인 프로젝트는 2.2 문서를 보세요.
버전: 3.0

시작 데이터

새 설치가 갖고 시작하는 데이터(관리자, 카탈로그)는 생성된 서비스를 통해 저장합니다. 그래야 비밀번호가 해시되고 다른 행처럼 모든 규칙이 지켜집니다. 권한 검사가 방문자를 거절하므로 코드는 애플리케이션 자신이라고 밝힙니다: CurrentUser.runAsSystem.

에이전트 키트의 상점 레시피에서:

src/main/java/com/acme/store/StoreSeed.java
@Component
class StoreSeed implements ApplicationRunner {

private final MemberService members;
private final ProductService products;

StoreSeed(MemberService members, ProductService products) {
this.members = members;
this.products = products;
}

@Override
public void run(ApplicationArguments args) {
CurrentUser.runAsSystem(() -> {
MemberSrchDTO admin = new MemberSrchDTO();
admin.setLogin("admin");
if (members.countBySearch(admin) > 0) return;

MemberDTO a = new MemberDTO();
a.setLogin("admin");
a.setPassword("admin-1234");
a.setName("Administrator");
a.setRole(MemberRole.ADMIN);
a.setAddress(new Address("1 Main Street", "Seoul", "04524"));
members.save(a);

product("Angelfish", "10.00");
product("Bulldog", "180.00");
});
}

private void product(String name, String price) {
ProductDTO p = new ProductDTO();
p.setName(name);
p.setPrice(Money.of(price));
products.save(p);
}
}
  • runAsSystem 안에서만 모든 @access 검사가 통과합니다. 관리자를 만들 수 있는 것은 애플리케이션 자신뿐입니다: role 이 @access(admin) 이기 때문입니다.
  • ApplicationRunner 는 서버가 이미 요청에 답하기 시작한 뒤에 돕니다.
  • 만들기 전에 확인합니다(countBySearch). 영속 DB 로 다시 시작해도 행이 겹치지 않습니다.
  • Pet Store 도 DemoAccounts 에서 같은 일을 합니다(user·admin 계정, petstore.demo-accounts=false 로 끔). 카탈로그는 data.sql 에서 옵니다.