| name | configuration |
| description | Load when working with environment settings, application profiles (local/staging/prod), Jasypt encryption, secrets management, or infrastructure configuration. |
Configuration Guide
Load this context when setting up environments, managing secrets, or modifying infrastructure.
Environment Profiles
| Profile | Infrastructure | Usage |
|---|
local | Docker Compose | Local development |
staging | k3s (Linux) | Pre-production testing |
prod | k3s (Linux) | Production |
Local Development Setup
docker compose up -d
./gradlew bootRun
docker compose down
Jasypt Encryption
Sensitive values are encrypted with Jasypt in application.yml:
spring:
datasource:
password: ENC(abcd1234encrypted...)
Encrypting New Values
Use the test utility:
@Test
fun jasyptGeneratTest() {
val text = "my_secret_value"
val encrypted = jasyptStringEncryptor.encrypt(text)
println("ENC($encrypted)")
}
Jasypt Configuration
@Configuration
class JasyptConfig {
}
Configuration File Locations
| Type | Location |
|---|
| Application settings | src/main/resources/application.yml |
| Profile-specific | src/main/resources/application-{profile}.yml |
| Infrastructure configs | src/main/kotlin/com/neki/common/infra/config/ |
| Security configs | src/main/kotlin/com/neki/auth/infra/security/ |
| Swagger config | src/main/kotlin/com/neki/common/api/document/SwaggerConfig.kt |
Infrastructure Configurations
JPA & QueryDSL
@Configuration
@EnableJpaAuditing
class JpaAuditingConfig
@Configuration
class QueryDslConfig {
@Bean
fun jpaQueryFactory(em: EntityManager) = JPAQueryFactory(em)
}
Redis Cache
@Configuration
@EnableCaching
class RedisCacheConfig {
}
REST Client
@Configuration
class RestClientConfig {
}
S3 Configuration
@ConfigurationProperties(prefix = "cloud.aws.s3")
data class S3Properties(
val bucket: String,
val region: String,
)
@Configuration
class S3MediaStorageConfig {
}
Security Configuration
OAuth Properties
@ConfigurationProperties(prefix = "oauth")
data class OauthProperties(
val kakao: KakaoProperties,
val apple: AppleProperties,
)
JWT Settings
@ConfigurationProperties(prefix = "app")
data class AppProperties(
val auth: AuthProperties,
)
data class AuthProperties(
val tokenSecret: String,
val tokenExpiry: Long,
val refreshTokenExpiry: Long,
)
Terraform (Infrastructure as Code)
Staging infrastructure managed via Terraform:
infra/terraform/
โโโ aws/
โ โโโ staging/
โ โ โโโ main.tf
โ โ โโโ variables.tf
โ โ โโโ outputs.tf
โ โโโ modules/
โ โโโ s3/
โ โโโ README.md
โโโ CICD_SETUP.md
Reference: infra/terraform/CICD_SETUP.md for CI/CD setup guide.
Adding New Configuration
- Add property to
application.yml (encrypt sensitive values)
- Create
@ConfigurationProperties class if complex
- Inject via constructor in components
- Document in this file