[Editor] Leverage Spring Framework to work as DI container

This commit is contained in:
2021-02-04 08:17:44 +01:00
parent 7a5ba2c4e2
commit db55743aed
5 changed files with 32 additions and 2 deletions

View File

@@ -1,6 +1,8 @@
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.4.10'
id 'org.openjfx.javafxplugin' version '0.0.8'
id 'org.springframework.boot' version "$springBootVersion"
id 'io.spring.dependency-management' version "$springDependencyManagementVersion"
id 'idea'
}
@@ -35,4 +37,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib"
implementation "no.tornado:tornadofx:${tornadoFxVersion}"
implementation "org.joml:joml:${jomlVersion}"
// Spring
implementation 'org.springframework.boot:spring-boot-starter'
}

View File

@@ -1,10 +1,31 @@
package com.bartlomiejpluta.base.editor
import com.bartlomiejpluta.base.editor.view.main.MainView
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.context.ConfigurableApplicationContext
import tornadofx.*
import kotlin.reflect.KClass
@SpringBootApplication
open class EditorApp : App(MainView::class) {
private lateinit var context: ConfigurableApplicationContext
class EditorApp : App(MainView::class)
override fun init() {
this.context = SpringApplication.run(this.javaClass)
context.autowireCapableBeanFactory.autowireBean(this)
FX.dicontainer = object : DIContainer {
override fun <T : Any> getInstance(type: KClass<T>): T = context.getBean(type.java)
override fun <T : Any> getInstance(type: KClass<T>, name: String): T = context.getBean(name, type.java)
}
}
override fun stop() {
super.stop()
context.close()
}
}
fun main(args: Array<String>) {
launch<EditorApp>(args)

View File

@@ -2,8 +2,10 @@ package com.bartlomiejpluta.base.editor.controller.map
import com.bartlomiejpluta.base.editor.controller.tileset.TileSetController
import com.bartlomiejpluta.base.editor.model.map.map.GameMap
import org.springframework.stereotype.Component
import tornadofx.Controller
@Component
class MapController : Controller() {
private val tileSetController: TileSetController by inject()

View File

@@ -1,8 +1,10 @@
package com.bartlomiejpluta.base.editor.controller.tileset
import com.bartlomiejpluta.base.editor.model.map.tileset.TileSet
import org.springframework.stereotype.Component
import tornadofx.Controller
@Component
class TileSetController : Controller() {
val tileset = TileSet(resources.image("/textures/tileset.png"), 160, 8)
}

View File

@@ -5,7 +5,7 @@ import com.bartlomiejpluta.base.editor.view.fragment.MapFragment
import tornadofx.*
class MainView : View() {
private val mapController: MapController by inject()
private val mapController: MapController by di()
private val mapFragment = find<MapFragment>()
override val root = borderpane {