рдЧрд┐рдЯрд╛рд░ рдХреЗ рд╕рд╛рде рд▓рдЪреАрд▓рд╛ рд╡рд┐рдиреНрдпрд╛рд╕

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЬреЛ рдЕрдкрд╛рдЪреЗ рдХреЙрдордиреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ: рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдФрд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛, рдЬреЛ рдмрд╛рдж рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
Double double = config.getDouble("number"); Integer integer = config.getInteger("number"); 

рд▓реЗрдХрд┐рди рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореБрдЭреЗ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЧрд╛рдЗрд╕ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдкрдврд╝рд╛ рдФрд░ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ рдЬреЛ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдорд╛рд░реНрдЧ рд╣реИ:
Guice рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред
рдЙрди рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
1) рдПрдХ @interface рдПрдиреЛрдЯреЗрд╢рди рдмрдирд╛рдПрдБред
2) рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬреЛ рдПрдиреЛрдЯреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдПрдиреЛрдЯреЗрд╢рди рдЬрд╡рд╛рджреЛрдХ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд░рд╛рдмрд░ () рдФрд░ рд╣реИрд╢рдХреЛрдб () рдХреЗ рд▓рд┐рдП рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред рдПрдиреЛрдЯреЗрдЯрд┐рдбрд╡рд┐рде () рдореЗрдВ рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдВред

рдФрд░ рдлрд┐рд░ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдХрд┐ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдкрдХреЛ рдареАрдХ рд╡рд╣реА рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рдЕрдзрд┐рдХ "рд╕реНрдорд╛рд░реНрдЯ" рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдиреЛрдЯреЗрдЯрд╡рд┐рдЯ рдЯреНрд░рд┐рдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдереАред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рд▓рдХреНрд╖реНрдпреЛрдВ

рдореИрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:

рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ, рдпрд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ, рд╡реЗ XML, JSON рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЖ рд╕рдХрддреЗ рд╣реИрдВред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдореИрдк рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░, рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВред

рдЬрдм рддрдХ рд╣рдо рдЦрддреНрдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рддрдм рддрдХ рд╣рдо рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 # - properties- host=foo.com port=1234 

рд╣рдо рдХреЛрдб рдореЗрдВ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
 public class A { @Inject @Prop(Property.HOST) private String host; @Inject @Prop(Property.PORT) private Integer port; // ... } 

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдкреНрд░реЛрдк рдПрдиреЛрдЯреЗрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рддреБрдЪреНрдЫ рд╣реИ:
 @Retention(RUNTIME) @Target({ ElementType.FIELD, ElementType.PARAMETER }) @BindingAnnotation public @interface Prop { Property value(); } 

рдкреНрд░реЙрдкрд░реНрдЯреА рдПрдХ рдПрдирдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 public enum Property { HOST("host", "The host name", new TypeLiteral<String>() {}, "foo.com"), PORT("port", "The port", new TypeLiteral<Integer>() {}, 1234); } 

рдЧрдгрдирд╛ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ "рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо", рд╡рд┐рд╡рд░рдг, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдФрд░ рдЙрд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдкреНрд░рдХрд╛рд░ TypeLiteral рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдРрд╕реЗ рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рднреА рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреНрдпрдерд╛ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЪрд╛рд▓реЗрдВ рдХреИрд╢ рдФрд░ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЧреНрд░рд╣ рдХреА рд╢реБрд░реВрдЖрдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдлрд┐рдЯ рджреЗрдЦрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдкрджрд╛рд╡рдирдд")ред

рдЕрдЧрд▓рд╛ рдХрджрдо рдЙрди рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рдмрд╛рдВрдзрдирд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдЗрдирдкреБрдЯ рдкрд░ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рд╣реИ - рдЪрд▓реЛ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ "рдСрд▓рдкреНрд░реЙрдкреНрд╕" рдХрд╣рддреЗ рд╣реИрдВ - рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рддрд╛рдХрд┐ рдЧрд┐рдЯрд╛рд░ рд╕рдордЭреЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрди рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдкрд░ рдЬрд╛рдПрдБрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдмрд╛рдБрдз рджреЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рд╣рдо рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, Guice API рд╕реЗ Key.get () рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рдореИрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
  for (Property prop : Property.values()) { Object value = PropertyConverters.getValue(prop.getType(), prop, allProps.asMap()); binder.bind(Key.get(prop.getType(), new PropImpl(prop))) .toProvider(new PropertyProvider(prop, value)); } 

рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рддреАрди рд╡рд░реНрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рд╕рдордЭрд╛рдпрд╛ рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓реЗ, PropertyConverters, рдмрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЬрд╛рд╡рд╛ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рдкреНрд░реЙрдкрд░реНрдЯреАрдкреНрд░реЙрдЗрдбрд░ рд╣реИ - рдЧрд╛рдЗрд╕ рд╕реЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд░рджрд╛рддрд╛:
 public class PropertyProvider<T> implements Provider<T> { private final T value; private final Property property; public PropertyProvider(Property property, T value) { this.property = property; this.value = value; } @Override public T get() { return value; } } 

PropImpl рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╣рд░ рд╕рдордп рд░реЛрдХ рджрд┐рдпрд╛ рдЬрдм рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЧрд╛рдЗрд╕ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЙрд╕ tidbit рдХреЗ рдкрд╛рд░ рдирд╣реАрдВ рдЖрдпрд╛ред рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Key.get () рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред Guice рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдорд╛рдирдЪрд┐рддреНрд░ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рди рдХреЗрд╡рд▓ рдХреНрд▓рд╛рд╕ рдФрд░ рдЯрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ рднреА рдЬреБрдбрд╝реА рд╣реИред рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди @Named рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкреЛрд╕, рдпрд╛ рдЗрд╕рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЕрдзреАрди рд╣реИ, рдпрд╣ рд╣рдореЗрдВ рдЕрдзрд┐рдХ рд╕реВрдЯ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмрд╛рдд рд╣реИ; рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЪрд╛рд▓ рдЦреЗрд▓рдиреЗ рдореЗрдВ рдЖрддреА рд╣реИ: рдЬрд╛рд╡рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдкрдХреЛ рдирд┐рдпрдорд┐рдд рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдХрд▓рд╛, рдХрдард┐рдирд╛рдИ рдпрд╣ рдереА рдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрднрд╡ рдерд╛ред

рдЕрдм рд╕рднреА рднрд╛рдЧреЛрдВ рдореЗрдВ рдЬрдЧрд╣ рд╣реИ, рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЬрд╛рджреВ рд╣реИ:
  @Inject @Prop(Property.HOST) private String host; 

рдЬрдм рдЧреБрдИрд╕ рдЗрд╕ рдЗрдВрдЬреЗрдХреНрд╢рди рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЕрдкрдиреЗ рдЬрд╝рд╛рд╢реНрд╢реНрдирд┐рдХ рдореЗрдВ рддрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рдЗрдВрдбрд░реНрд╕ рдорд┐рд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреА рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдереЗ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЬреЛрдбрд╝реА рд╣реИ (String, Prop) ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд╣ String, Property.HOST рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ рдФрд░ рд╡рд╣рд╛рдБ рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рддреНрд╡рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рд╡рд╣ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред

рд╣рдо рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг


рдкрд╣рд▓реЗ, рдпрд╣ рдХреЛрдб рдореБрдЭрд╕реЗ рдПрдХ рдЬрдЧрд╣ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдорд┐рдиреАрдлрд╝реНрд░рд╛рдорд╡рд░реНрдХ рдХреЛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рдПрдХрдорд╛рддреНрд░ рдЧрд╛рдпрдм рддрддреНрд╡ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдк рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдереАред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ:
 @Retention(RUNTIME) @Target({ ElementType.FIELD, ElementType.PARAMETER }) @BindingAnnotation public @interface Prop { Property value(); } 

рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ Enum рд▓реМрдЯрдирд╛ рдкрдбрд╝рд╛:
 @Retention(RUNTIME) @Target({ ElementType.FIELD, ElementType.PARAMETER }) @BindingAnnotation public @interface Prop { Enum value(); } 

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЬрд╛рд╡рд╛ рдЬреЗрдПрд▓рдПрд╕ рд╕реЗрдХреНрд╢рди 8.9 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, Enum рдФрд░ рдЗрд╕рдХреЗ рдЬреЗрдиреЗрд░рд┐рдХ рд╡рд░реНрдЬрди рдХреЛ рдПрдиреНрдпреВрдорд░реЗрдЯреЗрдб рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдЬреЗред рдмрд▓реЛрдЪ рдиреЗ рднреА рдХреА рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдЗрд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ Prop#value рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред

рд╕рдВрдХрд▓реНрдкрдирд╛ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреНрд░рдорд╛рдг рдпрд╣рд╛рдБ рд╣реИ , рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЙрдкрдпреЛрдЧреА рдкрд╛рдПрдВрдЧреЗред

Source: https://habr.com/ru/post/In187758/


All Articles