Map<Integer, Book> bookMap; @PostConstruct public void init() { bookMap = new ConcurrentHashMap<>(); bookMap.put(1, new Book(1, “燃えよ剣”, “司馬遼太郎 … } @Override public Optional<Book> get(int id) { return Optional.ofNullable(bookMap.get(id)); } ・・・ } @ApplicationScoped public class InMemoryBookRepository implements BookRepository { private Map<Integer, Book> bookMap; @PostConstruct public void init() { bookMap = new ConcurrentHashMap<>(); bookMap.put(1, new Book(1, "燃えよ剣", "司馬遼太郎")); … } @Override public Optional<Book> get(int id) { return Optional.ofNullable(bookMap.get(id)); } ・・・ } point point Spring Framework MicroProfile(CDI) • 起動時にclasspathから@Componetがスキャンされ自動 で登録 • スコープは@Scope(“prototype”)など別で指定する • スコープのデフォルトはSingleton(=Application) • Springと同様に起動時にclasspathから@ApplicationScopedなど のスコープアノテーションスキャンされ自動で登録 • スコープは@RequestScopedなどSpringとほぼ同じものが用意され ている • ただし、 @Scope(“prototype”)に相当するものはない 脱線ネタ:@PostConstructの挙動は双方で違う ので注意しましょう