Skip to content

Commit 41cf111

Browse files
authored
fix(core): hard dependency on devtools (#26) (#31)
ViewComponentAutoConfiguration checks both local-development property and spring-dev-tools in classpath now.
1 parent 030d592 commit 41cf111

3 files changed

Lines changed: 27 additions & 4 deletions

File tree

core/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ repositories {
2525
dependencies {
2626
implementation("org.springframework.boot:spring-boot-starter-web")
2727
implementation("org.springframework.boot:spring-boot-starter-aop")
28-
implementation("org.springframework.boot:spring-boot-devtools")
28+
compileOnly("org.springframework.boot:spring-boot-devtools")
2929
implementation("io.projectreactor:reactor-core")
3030
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
3131
implementation("org.jetbrains.kotlin:kotlin-reflect")

core/src/main/kotlin/de/tschuehly/spring/viewcomponent/core/ViewComponentAutoConfiguration.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package de.tschuehly.spring.viewcomponent.core
22

3-
import de.tschuehly.spring.viewcomponent.core.component.ViewComponent
43
import de.tschuehly.spring.viewcomponent.core.component.ViewComponentProperties
4+
import de.tschuehly.spring.viewcomponent.core.condition.DevToolsExistsCondition
55
import de.tschuehly.spring.viewcomponent.core.processor.ViewComponentChangeListener
66
import org.slf4j.Logger
77
import org.slf4j.LoggerFactory
8-
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
98
import org.springframework.boot.context.properties.EnableConfigurationProperties
109
import org.springframework.boot.devtools.filewatch.FileSystemWatcher
1110
import org.springframework.context.ApplicationContext
1211
import org.springframework.context.annotation.Bean
1312
import org.springframework.context.annotation.ComponentScan
13+
import org.springframework.context.annotation.Conditional
1414
import org.springframework.context.annotation.Configuration
1515
import java.io.File
1616

@@ -20,7 +20,7 @@ import java.io.File
2020
class ViewComponentAutoConfiguration {
2121

2222
@Configuration
23-
@ConditionalOnProperty("spring.view-component.local-development")
23+
@Conditional(DevToolsExistsCondition::class)
2424
class LocalDevConfig {
2525
val logger: Logger = LoggerFactory.getLogger(LocalDevConfig::class.java)
2626

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package de.tschuehly.spring.viewcomponent.core.condition
2+
3+
import org.slf4j.Logger
4+
import org.slf4j.LoggerFactory
5+
import org.springframework.context.annotation.Condition
6+
import org.springframework.context.annotation.ConditionContext
7+
import org.springframework.core.type.AnnotatedTypeMetadata
8+
9+
class DevToolsExistsCondition: Condition {
10+
private val logger : Logger = LoggerFactory.getLogger(DevToolsExistsCondition::class.java)
11+
override fun matches(context: ConditionContext, metadata: AnnotatedTypeMetadata): Boolean {
12+
val isLocalDevelopment = context.environment.getProperty("spring.view-component.local-development").toBoolean()
13+
val isDevToolsExists = try {
14+
Class.forName("org.springframework.boot.devtools.restart.Restarter", false, context.classLoader)
15+
true
16+
} catch (e: ClassNotFoundException) {
17+
logger.error("In order to use hot-reload function, spring-dev-tools needed")
18+
false
19+
}
20+
21+
return isLocalDevelopment && isDevToolsExists
22+
}
23+
}

0 commit comments

Comments
 (0)