Spring Property Injection Concepts

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

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, as described in the Dependency Injection and Inversion of Control Container section, and 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 by other means. This section addresses property injection concepts.

The Environment Abstraction

The environment is an abstraction integrated in the container that models two key aspects of the application environment: configuration properties and profiles.

The environment can be injected into a component and accessed programmatically as follows:

import org.springframework.core.env.Environment;
...
@Autowired
private Environment environment;

Configuration Properties

Configuration properties are pieces of data coded into Spring components using the JavaBeans property conventions. 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.

Reading Properties from Environment

The PropertySource Abstraction

Property Sources

Java System Properties

Command-Line Arguments

java -jar ... --<property.name>=<value>

Example:

java -jar ... --server.port=9999

Environment Variables

The naming style should accommodate restrictions placed on environment variable names by the operating system.

export SERVER_PORT=9999

Property Configuration Files

application.properties

application.properties

Configuration Service

The configuration service is also referred to as configuration server.

Precedence

Profiles

Deplete This:

tmp