애플리케이션 및 서비스를 최소의 요구 사항으로 생성할 수 있도록 도와줍니다.
-
개발을 위해 획기적으로 빠르고 광범위하게 액세스할 수 있는 시작 경험을 제공합니다. 비지니스에만 집중하세요.
- 객체관리 (생성, 라이프 사이클)
- 디펜던시 인젝션 등..
-
의존관계 설정으로만으로 추가 기능(modules)을 쉽고 빠르게 적용할수 있습니다.
참조 문서에는 자세한 설치 지침과 포괄적인 시작 가이드가 포함되어 있습니다.
다음은 Java의 완전한 simple-boot 애플리케이션에 대한 간단한 티저입니다.
- version: >= java8
- 다음은 Java의 완전한 simple-boot 애플리케이션에 대한 간단한 web project 입니다.
- gradle
dependencies { implementation project(':simple') implementation project(':simple-db') implementation project(':simple-db-h2') implementation project(':simple-db-hibernate') implementation project(':simple-web') implementation project(':simple-web-thymeleaf') implementation project(':simple-web-netty') }
- java
public class ExampleApplication { public static void main(String[] args) { new SimpleApplication().run(ExampleApplication.class); } }
@Controller public class TodoController { private final AdminService adminService; @Injection public TodoController(AdminService adminService) { this.userService = userService; } @GetMapping("/admins") public List<Admin> admins(Request request, Response response){ return adminService.admins(); } @PostMapping("/admin") public Serializable saveAdmin(Request request, Response response) throws ProcessingException { Admin admin = request.body(Admin.class); return adminService.save(admin); } @GetMapping("/") public View index(Request request, Response response){ View view = new View("views/index.html"); view.put("name", "demo page"); return view; } }
@Service public class AdminService { private DatabaseAccessor databaseAccessor; @Injection public AdminService(DatabaseAccessor databaseAccessor) { this.databaseAccessor = databaseAccessor; } @Transactional public Serializable save(Admin admin) { return databaseAccessor.save(admin); } @Transactional public List<Admin> admins() { return databaseAccessor.resultList(Admin.class); } }
- gradle
- cores
- simple [core]
- dbs
- webs
┌─ cores ─────────────┐ ┌─ dbs ────────────────────────────────────┐
│ ┌──────────────┐ │ │ ┌─────────────┐ ┌────────────────┐ │
│ │ simple │ ◄────┤ │ simple-db ◄────┤ simple-db-h2 │ │
│ └──────────────┘ │ │ └──────▲──────┘ └────────────────┘ │
└──────────▲──────────┘ │ │ │
│ │ ┌──────┴───────────────────────┐ │
│ │ │ * DatabaseAccessor │ │
│ │ │ * TransactionManager │ │
│ │ │ │ │
│ │ │ simple-db-hibernate │ │
│ │ └──────────────────────────────┘ │
┌─ webs ───┴─────────┐ └──────────────────────────────────────────┘
│ ┌────────────┐ └────────────────────────────────────────────────┐
│ │ simple-web ◄────────┐ ┌─────────────────────────────┐ │
│ └──────▲─────┘ └─────┤ * ViewResolver │ │
│ ┌──────┴─────────────────┐ │ │ │
│ │ * WebServer │ │ simple-web-thymeleaf │ │
│ │ │ │ ... │ │
│ │ simple-web-netty │ └─────────────────────────────┘ │
│ │ ... │ │
│ └────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
-─ name ─- : modules group name
* : implements interface
◄ ▲ ▼ ► : dependency arrow
... : more
-
package 위치: com.simple.boot.{모듈이름}
-
public class 모듈이름 extends Starter { ... }
-
@PostConstruct Method쪽 구동 로직 구현.
@Config public class ModuleStarter extends Starter { private final ModuleConfig config; private final SimstanceManager simstanceManager; @Injection public ModuleStarter(SimstanceManager simstanceManager, ModuleConfig config) { this.simstanceManager = simstanceManager; this.config = config; } @PostConstruct public void init() { // something... } }
@Config public class ModuleConfig { // something... public Map<String, Object> property; @Injection public ModuleConfig(ConfigLoader configLoader) { configLoader.map("module", this); } }
- simple
- com.simple.boot.transaction.TransactionManager
- 트렌젝션 제어
- com.simple.boot.transaction.TransactionManager
- simple-db
- com.simple.boot.db.DatabaseAccessor
- 데이터베이스 접근 제어
- com.simple.boot.db.DatabaseAccessor
- simple-web
- com.simple.boot.web.server.WebServer
- 웹서버
- com.simple.boot.web.view.ViewResolver
- 뷰엔진
- com.simple.boot.web.server.WebServer
- 추가 Modules
- 같이 만들어 나갈 개발자분 참여가 필요합니다.
- 많은 참여가 필요합니다.
- simple-boot is Open Source software released under the Apache 2.0 license.
- [email protected]