Spring Property Injection Concepts

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

This section refers to property injection, which is the process that allows external pieces of data, known as configuration properties, to be provided to the application runtime at startup or while it is running, in form of Java system properties, environment variables and other means. The component configuration, or bean wiring, is addressed in the "Dependency Injection and Inversion of Control Container Concepts - Configuration Model" section.

The Environment Abstraction

Configuration properties are pieces of data coded into Spring components using the JavaBeans conventions referring to properties. They usually have a corresponding member variable, a getter and a setter. The Spring Framework provides conventions and mechanisms to automatically inject values into configuration properties, while those values come from several different property sources.

From this perspective, Spring has two different, but related kinds of configurations: bean wiring, which refers to declaring application components and their dependencies, and how those dependencies should be injected into each other. This subject is handled extensively in the Dependency Injection and Inversion of Control Container section.

Injecting Properties into Beans

Property Injection and Auto-Configuration

Property Sources

Java System Properties

Command-Line Arguments

Environment Variables

Property Files

Configuration Service

Precedence

Profiles




application.properties

application.properties

Application Arguments

Environment Variables

Profile

TODO

  • Diagram with property sources and their relative priority, including the configuration service (chapter 14).
  • Augment https://kb.novaordis.com/index.php/Spring_Boot_Concepts#Autoconfiguration with specialized sections on property injection for DataSources, etc.
  • How do I read the effective values of all configuration properties during testing and at runtime?
  • You can figure out the active profile from within a Spring application by @Autowire-ing org.springframework.core.env.Environment and inspecting it.