
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рдкреБрд╕реНрддрдХ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛- рдФрд░ рдЬреЗрд╡реАрдПрдо-рдорд╢реАрдиреЛрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ рдЬреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдФрд░ рдХреНрд▓рд╛рдЙрдб рдлрд╛рдЙрдВрдбреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдереЛрдбрд╝реЗ рд╕рдордп рдореЗрдВ рдмреЗрд╣рддрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реЛрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рдЪрд▓ рдЧрдпрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реНрдЯреНрд░реИрдЯреЛрд╕реНрдлреЗрд░рд┐рдХ рдКрдВрдЪрд╛рдИ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдиреЗ рдХреНрдпрд╛ рдЙрддрд╛рд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдЬ рдЙрджреНрдпрдо рдХреНрд▓рд╛рдЙрдб рдлрд╛рдЙрдВрдбреНрд░реА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдпрд╣ рдкреБрд╕реНрддрдХ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реИред
рдЕрдВрд╢ред 3. рдмрд╛рд░рд╣-рдХрд╛рд░рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢реИрд▓реА
рдпрд╣ рдЕрдзреНрдпрд╛рдп рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдХрдИ рд╢рдмреНрджрд╛рд╡рд▓реА рд╢рдмреНрджреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдЬрдм рдпрд╣ рд╕реНрдкреНрд░рд┐рдВрдЧ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореЗрд░рд╛ рдЕрдХреНрд╕рд░ рдорддрд▓рдм рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ,
ApplicationContext , рд╡рд╕рдВрдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реЗрдо рдШрдЯрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдПрдХ XML рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ
ClassPathXmlApplicationContext , рдпрд╛ Java рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ
рдПрдиреЛрдЯреЗрд╢рди ConfigApplicationContext рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╕рдордп, рд╣рдо
рдЬрд╛рд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВрдЧреЗ
редрд▓реЗрдХрд┐рди рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рджреЗрдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ
12-рдХрд╛рд░рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдкреНрд░рдХрдЯрди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╢рд╛рдмреНрджрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рд╣рдо рдкрд╛рд╕рд╡рд░реНрдб, рдкреЛрд░реНрдЯ рдФрд░ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЭрдВрдбреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЬрд╛рджреВ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХрдЯ рдореЗрдВ рд╕рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдорд╛рдирджрдВрдб рд╢рд╛рдорд┐рд▓ рд╣реИ: рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдФрд░ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рд╕рдордп рдЖрд╡реЗрджрди рдХрд╛ рдХреЛрдб рдЖрдзрд╛рд░ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рджреВрд╕рд░реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреАрдиреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд░реВрдмреА рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕рдорд░реНрдерди
рд╡рд╕рдВрдд рдореЗрдВ,
рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╣реЛрд▓реНрдбрд░рдХреЙрдиреНрдлрд┐рдЧрд░рд░ рд╡рд░реНрдЧ рдХреЗ рдЖрдЧрдорди рдХреЗ рдмрд╛рдж рд╕реЗ 12-рдХрд╛рд░рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢реИрд▓реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЗрд╕рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдПрдХреНрд╕рдПрдордПрд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХреЛрдВ рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .properties рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ, 2003 рд╕реЗ
рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╣реЛрд▓реНрдбрд░рдХреЙрдиреНрдлрд┐рдЧрд░рд░ рд╡рд░реНрдЧ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЧрдИ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ 2.5 рдиреЗ XML рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рд╕рд╛рде рд╣реА рдЗрд╕ рд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред рдпрд╣ рдмреАрди рдШрдЯрдХреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╢рд╛рдмреНрджрд┐рдХ рдорд╛рдиреЛрдВ рдХреЗ рдПрдХреНрд╕рдПрдордПрд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрд╛рд╣рд░реА рдЧреБрдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдВрдЬреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, simple.properties рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЬреЛ рд╡рд░реНрдЧ рдкрде рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
12 рдХрд╛рд░рдХреЛрдВ рдХреА рд╢реИрд▓реА рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдореМрдЬреВрджрд╛ рдЬрд╛рджреВ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкрддреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд╛рддреЛрдВ рдЬреИрд╕реЗ, рдкреЛрд░реНрдЯ, рдЖрджрд┐, рдПрдХ рд╕рдВрдХрд▓рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рддред рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдирдП рдХреЛрдб рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдП рдмрд┐рдирд╛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрд▓рд╛рд╕ рдкреНрд░реЙрдкрд░реНрдЯреАрд╣реЛрд▓реНрдбрд░рдХреЙрдиреНрдлрд┐рдЧрд░
рдЪрд▓рд┐рдП PropertyPlaceholderConfigurer рд╡рд░реНрдЧ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреАрди рдШрдЯрдХреЛрдВ рдХреА XML рдкрд░рд┐рднрд╛рд╖рд╛, рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .properties рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЗрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдореВрд▓реНрдп рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЙрджрд╛рд╣рд░рдг 3.1 рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдХреЛрдб рдХреЛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг 3.1 рд╕рдВрдкрддреНрддрд┐ рдлрд╝рд╛рдЗрд▓: some.properties
configuration.projectName=Spring Framework
рдпрд╣ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрд╛ ClassPathXmlApplicationContext рдХреНрд▓рд╛рд╕ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реНрдкреНрд░рд┐рдВрдЧ рдирд╛рдо рд╕реЗ XML рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдХреБрдЫ.рдкреНрд░реЛрдлрд╝рд░реНрдЯреАрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рддрдм рд╣рдо рд╕реЗрдо рдШрдЯрдХреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ $ {configuration.projectName} рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╕рдВрдд рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╣рдорд╛рд░реЗ рдЧреБрдгреЛрдВ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг 3.2)ред
рдЙрджрд╛рд╣рд░рдг 3.2ред рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди XML рдлрд╝рд╛рдЗрд▓
<context:property-placeholder location="classpath:some.properties"/> (1) <bean class="classic.Application"> <property name="configurationProjectName" value="${configuration.projectName}"/> </bean>
(1) рд╡рд░реНрдЧрдкрде: рд╡рд╣ рд╕реНрдерд╛рди рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдмреНрд▓реЙрдХ (.jar, .war, рдЖрджрд┐) рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ, рдлрд╝рд╛рдЗрд▓ рд╕рд╣рд┐рдд рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рдФрд░ url :, рдЬреЛ рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдлрд╛рдЗрд▓ рдХреЛ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдмрджреМрд▓рдд рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдЙрджрд╛рд╣рд░рдг 3.3)ред
рдЙрджрд╛рд╣рд░рдг 3.3 рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдЬрд┐рд╕реЗ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдкреИрдХреЗрдЬ рдХреНрд▓рд╛рд╕рд┐рдХ;
import org.apache.commons.logging.LogFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Application { public static void main(String[] args) { new ClassPathXmlApplicationContext("classic.xml"); } public void setConfigurationProjectName(String pn) { LogFactory.getLog(getClass()).info("the configuration project name is " + pn); } }
рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреАрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ 3.0 рдФрд░ 3.1 рдореЗрдВ, рдЬрд╛рд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИред рдЗрди рд░рд┐рд▓реАрдЬ рдореЗрдВ
рдореВрд▓реНрдп рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЕрдореВрд░реНрдд рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рд╛рд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдореВрд▓реНрдп
рдкрд░реНрдпрд╛рд╡рд░рдг рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди,
рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдмрдВрдз рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░рд╢реНрди ("рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд▓рд╛рдЗрди рд╡рд┐рднрд╛рдЬрдХ рд▓рд╛рдЗрди.рд╕реЗрдкреНрдЯрд░ рдХреНрдпрд╛ рд╣реИ?") рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрдореВрд░реНрдд рдХреБрдВрдЬреА рдФрд░ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рд╕реНрд░реЛрдд рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдХреЗ, рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдорд╛рди рдХрд╣рд╛рдВ рд╕реЗ рдкрдврд╝реЗ рдЬрд╛рдПрдВрдЧреЗред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдорд╛рдиреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд▓рд╛рдЗрди.рд╕реЗрдкрд░реЗрдЯрд░ред рдЖрдк рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ @PropertySource рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЗ рдЧреБрдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрд╣рд▓реЗ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рди рдПрдиреЛрдЯреЗрд╢рди, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░, рд╕реЗрдЯрд░реНрд╕, рдлрд╝реАрд▓реНрдбреНрд╕ рдЖрджрд┐ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓реИрдВрдЧреНрд╡реЗрдЬ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐
PropertySourcesPlaceholderConfigurer рдкрдВрдЬреАрдХреГрдд рд╣реЛ, рдЙрджрд╛рд╣рд░рдг 3.4 рдореЗрдВред
рдЙрджрд╛рд╣рд░рдг 3.4ред рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ
рдкреИрдХреЗрдЬ рдПрдирд╡реА;
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.env.Environment; import javax.annotation.PostConstruct; (1) @Configuration @PropertySource("some.properties") public class Application { private final Log log = LogFactory.getLog(getClass()); public static void main(String[] args) throws Throwable { new AnnotationConfigApplicationContext(Application.class); } (2) @Bean static PropertySourcesPlaceholderConfigurer pspc() { return new PropertySourcesPlaceholderConfigurer(); } (3) @Value("${configuration.projectName}") private String fieldValue; (4) @Autowired Application(@Value("${configuration.projectName}") String pn) { log.info("Application constructor: " + pn); } (5) @Value("${configuration.projectName}") void setProjectName(String projectName) { log.info("setProjectName: " + projectName); } (6) @Autowired void setEnvironment(Environment env) { log.info("setEnvironment: " + env.getProperty("configuration.projectName")); } (7) @Bean InitializingBean both(Environment env, @Value("${configuration.projectName}") String projectName) { return () -> { log.info("@Bean with both dependencies (projectName): " + projectName); log.info("@Bean with both dependencies (env): " + env.getProperty("configuration.projectName")); }; } @PostConstruct void afterPropertiesSet() throws Throwable { log.info("fieldValue: " + this.fieldValue); } }
(1) рдПрдиреЛрдЯреЗрд╢рди @PropertySource, рдкреНрд░реЙрдкрд░реНрдЯреА-рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдХреЗ рд╕рдорд╛рди рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИ, рдЬреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .properties рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ рдкреНрд░реЙрдкрд░реНрдЯреА рд╕реНрд░реЛрдд рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
(2) рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрдкреНрд▓рд╕рд╣реЛрд▓реНрдбрд░рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдмреАрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреАрдирдлреИрдХреНрдЯрд░реАрдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреАрди рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдХреНрд╕рдПрдордПрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмреАрди рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
(3) рдЖрдк
рдореВрд▓реНрдп рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЦреЗрддреЛрдВ рдХреЛ рд╕рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдРрд╕рд╛ рди рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдХреЛрдб рдкрд░реАрдХреНрд╖рд╛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ ...!)
(4) ... рдпрд╛
рдорд╛рди рдПрдиреЛрдЯреЗрд╢рди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ...
(5) ... рдпрд╛ рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ...
(6) ... рдпрд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдореНрдмреЗрдб рдХрд░реЗрдВ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреБрдВрдЬреА рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
(7)
рдорд╛рди рдПрдиреЛрдЯреЗрд╢рди рд╡рд╛рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЬрд╛рд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ
рдмреАрди рд╡рд┐рдзрд┐ рддрд░реНрдХ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдорд╛рди simple.properties рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдХрд╛ рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ редprojectName, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкреНрд░реЛрдлрд╛рдЗрд▓
рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░реНрдпрд╛рд╡рд░рдг рдЕрдореВрд░реНрддрддрд╛
рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкреЗрд╢ рдХрд░рддреА
рд╣реИ ред рдпрд╣ рдЖрдкрдХреЛ рдмреАрди рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рд▓реЗрдмрд▓ (рдкреНрд░реЛрдлрд╛рдЗрд▓) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реЗрдо рдШрдЯрдХреЛрдВ рдФрд░ рдмреАрди рд░реЗрдЦрд╛рдВрдХрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╕рд╛рде рдХрдИ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╕рдХреНрд░рд┐рдп рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд┐рди рдмреАрдиреНрд╕ рдореЗрдВ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдмреАрдиреНрд╕ рдХреЗрд╡рд▓ рддрднреА рд╕рдХреНрд░рд┐рдп рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрдиреНрдп рд╕рдХреНрд░рд┐рдп рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рди рд╣реЛред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ XML рдореЗрдВ рдмреАрди рдШрдЯрдХ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдпрд╛ рдЯреИрдЧ рд╡рд░реНрдЧреЛрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд░реНрдЧреЛрдВ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмреАрди рдШрдЯрдХреЛрдВ, рдпрд╛
рдмреАрди рдкреНрд░рджрд╛рддрд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░реЛрдлрд╛рдЗрд▓ рдЖрдкрдХреЛ рдмреАрди рдШрдЯрдХреЛрдВ рдХреЗ рд╕реЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рджреВрд╕рд░реЗ рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рджреЗрд╡ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд H2 рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд javax.sql.DataSource рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, рдЬрдм рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рдХреНрд░рд┐рдп рд╣реЛрддреА рд╣реИ, рддреЛ javax.sql.DataSata рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдЬреЛ JNDI рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреНрд▓рд╛рдЙрдб рдлрд╛рдЙрдВрдбреНрд░реА рдореЗрдВ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗ рдЧреБрдгреЛрдВ рдХреЛ рдкрдврд╝рдХрд░ред рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЖрдкрдХрд╛ рдХреЛрдб рдХрд╛рдо рдХрд░реЗрдЧрд╛: рдЖрдкрдХреЛ javax.sql.DataSource рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдпрд╛ рдХрдИ (рдЙрджрд╛рд╣рд░рдг 3.5) рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг 3.5 рдкреНрд░рджрд░реНрд╢рди рд╣реИ рдХрд┐ @Configuration рдХрдХреНрд╖рд╛рдПрдВ рд╡рд┐рднрд┐рдиреНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдо рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреА рд╣реИрдВ
рд╕рдХреНрд░рд┐рдп рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓
package profiles; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.*; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.env.Environment; import org.springframework.util.StringUtils; @Configuration public class Application { private Log log = LogFactory.getLog(getClass()); @Bean static PropertySourcesPlaceholderConfigurer pspc() { return new PropertySourcesPlaceholderConfigurer(); } (1) @Configuration @Profile("prod") @PropertySource("some-prod.properties") public static class ProdConfiguration { @Bean InitializingBean init() { return () -> LogFactory.getLog(getClass()).info("prod InitializingBean"); } } @Configuration @Profile({ "default", "dev" }) (2) @PropertySource("some.properties") public static class DefaultConfiguration { @Bean InitializingBean init() { return () -> LogFactory.getLog(getClass()).info("default InitializingBean"); } } (3) @Bean InitializingBean which(Environment e, @Value("${configuration.projectName}") String projectName) { return () -> { log.info("activeProfiles: '" + StringUtils.arrayToCommaDelimitedString(e.getActiveProfiles()) + "'"); log.info("configuration.projectName: " + projectName); }; } public static void main(String[] args) { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(); ac.getEnvironment().setActiveProfiles("dev"); (4) ac.register(Application.class); ac.refresh(); } }
(1) рдпрд╣ рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд░реНрдЧ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рднреА
рдмреАрди рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХреЗрд╡рд▓ рддрднреА рдХреА рдЬрд╛рдПрдЧреА рдЬрдм рдареЗрд╕ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рдХреНрд░рд┐рдп рд╣реЛред
(реи) рдпрд╣ рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд░реНрдЧ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рднреА
рдмреАрди рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХреЗрд╡рд▓ рддрднреА рдХреА рдЬрд╛рдПрдЧреА рдЬрдм рджреЗрд╡ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рдХреНрд░рд┐рдп рд╣реИ рдпрд╛ рдХреЛрдИ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЗрд╡ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
(3) рдпрд╣ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд┐рдВрдЧ рдШрдЯрдХ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдореВрд▓реНрдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрддрдГ рдЧреБрдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
(4) рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ (рдпрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓) рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрдИ рдЕрдиреНрдп рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рдХреНрд░рд┐рдпрдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ_рдкреНрд░реЛрдлрд╛рдЗрд▓_рдПрдХреНрдЯрд┐рд╡ рдпрд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ.рдкреНрд░реЛрдлрд╛рдЗрд▓.рд╕рдХреНрд░рд┐рдп рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SPRING_PROFILES_ACTIVE), рдПрдХ JVM рд╕рдВрдкрддреНрддрд┐ (MDspring.profiles.active = ...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╕рд░реНрд╡рд▓реЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░рдВрднреАрдХрд░рдг рдкреИрд░рд╛рдореАрдЯрд░, рдпрд╛ "рдЕрдзрд┐рдорд╛рдирддрдГ"ред
рдмреВрдЯреАрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╡рд╛рддрд╛рд╡рд░рдг рд╢реБрд░реВ рдореЗрдВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рддрд░реНрдХ рдЬреЗрдПрдирдбреАрдЖрдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВред
- рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХред
- рдЬрд╛рд╡рд╛ рд╕реЗ JNDI рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ: COMP / envред
- System.getProperties () рдХреЗ рдЧреБрдгред
- рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ред
- рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╛рд╣рд░реА рдЧреБрдг рдлрд╝рд╛рдЗрд▓реЗрдВ: (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди /)? рдЕрдиреБрдкреНрд░рдпреЛрдЧред (Yml.properties)ред
- рдкреБрд░рд╛рд▓реЗрдЦ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЧреБрдг рдлрд╛рдЗрд▓реЗрдВ (config /)? рдПрдкреНрд▓рд┐рдХреЗрд╢рди? (Yml.properties)ред
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди @PropertySourceред
- SpringApplication.getDefaultProperties () рд╕реЗ рд╕реНрд░реЛрдд рдЧреБрдгред
рдпрджрд┐
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, src / main / resource / application-foo.properties рдЬреИрд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ, рдЬрд╣рд╛рдВ рдлреВ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╣реИред
рдпрджрд┐
рд╕реНрдиреЗрдкрд╛рдпрдордПрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ
рдХреНрд▓рд╛рдердкрд╛рдереЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╕рдореНрдореЗрд▓рди рдХреЗ рдмрд╛рдж, YAML рдлрд╛рдЗрд▓реЗрдВ рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХреА рдЬрд╛рдПрдВрдЧреАред
YAML рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкреГрд╖реНрда рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ "YAML рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирд╡-рдкрдардиреАрдп рдорд╛рдирдХ рд╣реИред" YAML рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╢реНрд░реЗрдгреАрдмрджреНрдз рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред рдПрдХреНрд╕рдЯреЗрдВрд╢рди .properties рдХреЗ рд╕рд╛рде рдирд┐рдпрдорд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ, рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдПрдХ рдмрд┐рдВрджреБ ("ред") рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ YAML рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ, рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдбреЗрдВрдЯ рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрддреНрдпрдзрд┐рдХ рд╢рд╛рдЦрд╛рдУрдВ рд╡рд╛рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреЗрдбрд╝реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдо рдЬрдбрд╝реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди .yml рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдЙрджрд╛рд╣рд░рдг 3.6 рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИред
рдЙрджрд╛рд╣рд░рдг 3.6 Application.yml рдЧреБрдг рдлрд╝рд╛рдЗрд▓ред рдбреЗрдЯрд╛ рдХреЛ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдХреНрд░рдо рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
configuration: projectName : Spring Boot management: security: enabled: false
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ -D рддрд░реНрдХреЛрдВ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЬрд╛рд╡рд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред рдпрд╣ рдЙрдирдХреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЛ рднреА рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ $ CONFIGURATION_PROJECTNAME (PROJECT_NAME CONFIGURATION) рдпрд╛ -D рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ -Dconfiguration.projectName (configuration.project_name) рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.рдкреНрд░реЛрдЬреЗрдХреНрдЯ_рдирд╛рдо) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред spring_profiles_active рдЯреЛрдХрди рдЙрдкрд▓рдмреНрдз рд╣реИред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рд╡реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рддреЛ рд╡реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдкрдврд╝реЗ рдмрди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЪрд╛рдмрд┐рдпрд╛рдВ рдХреЛрдб рдореЗрдВ рдЬрд╛рджреВ рдХреЗ рддрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдШрдЯрдХ рдкреНрд░рдХрд╛рд░ @ConfigurationProperties рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред POJO рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп - рд╕рд╛рджрд╛ рдкреБрд░рд╛рдирд╛ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ - @ConfigurationProperties рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдФрд░ рдЙрдкрд╕рд░реНрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП, рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрд╕ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде POJO рдЧреБрдгреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, config.projectName рдХрд╛ рдорд╛рди POJO рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рд╕рднреА рдХреЛрдб рддрдм рдЯрд╛рдЗрдк-рд╕реЗрдл рдорд╛рдиреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ dereference рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд╛рди рдкрд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдХреБрдВрдЬреА (рдЙрджрд╛рд╣рд░рдг 3.7) рд╕реЗ рдореИрдкрд┐рдВрдЧ рд╣реЛрдЧреАред
рдЙрджрд╛рд╣рд░рдг 3.7ред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ src / main / resource / application.yml рд╕реЗ рдЧреБрдгреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛
рдкреИрдХреЗрдЬ рдмреВрдЯ;
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.stereotype.Component; (1) @EnableConfigurationProperties @SpringBootApplication public class Application { private final Log log = LogFactory.getLog(getClass()); public static void main(String[] args) { SpringApplication.run(Application.class); } @Autowired public Application(ConfigurationProjectProperties cp) { log.info("configurationProjectProperties.projectName = " + cp.getProjectName()); } } (2) @Component @ConfigurationProperties("configuration") class ConfigurationProjectProperties { private String projectName; (3) public String getProjectName() { return projectName; } public void setProjectName(String projectName) { this.projectName = projectName; } }
(1) @EnableConfigurationProperties рдПрдиреЛрдЯреЗрд╢рди рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ @ConfigurationProperties рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдП рдЧрдП рдкреАрдУрдЬреЗрдУ рдХреЛ рдорд╛рдирдЪрд┐рддреНрд░ рдЧреБрдгреЛрдВ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред
(2) @ConfigurationProperties рдПрдиреЛрдЯреЗрд╢рди рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмреАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдореИрдк рдХреЛ рдЯреЛрдХрди рджреНрд╡рд╛рд░рд╛ рдлреЙрд▓реЛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
(3) ProjectName рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЕрдВрддрддрдГ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд╣реЛрдЧрд╛ редprojectName рдЧреБрдг рдХреБрдВрдЬреАред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ @ConfigurationProperties рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдШрдЯрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд┐рд▓ рд╕рдХреЗред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреБрдВрдЬреА рдЖрдкрдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, org.springframework.boot: рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ-рд╕реНрдЯрд╛рд░реНрдЯрд░-рдПрдХреНрдЯреНрдпреВрдПрдЯрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдХрд░, рдФрд░ рдлрд┐рд░ рдкреГрд╖реНрда 127.0.1.1: 8080 / configprops рдкрд░ рдЬрд╛рдХрд░ред
рдПрдХреНрдЯреНрдпреВрдПрдЯрд░ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдкрд░ рдЕрдзреНрдпрд╛рдп 13 рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред рдЙрдиреНрд╣реЗрдВ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП) management.security.enabled = false рдХрд░рдХреЗ application.properties рдлрд╝рд╛рдЗрд▓ (рдпрд╛ application.yml) рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗред
рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреНрд▓рд╛рд╕рдкреИрде рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдкрдХреЛ рд╕рдорд░реНрдерд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЧреБрдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓реЗрдЧреАред рдЬреИрд╕реЗ рд╣реА рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рддреА рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг рджрд┐рдЦрд╛рдП рдЬрд╛рдПрдВрдЧреЗред рдпрд╣ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдЖрдкрдХреЗ POJOs рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ @ConfigurationProperties рдПрдиреЛрдЯреЗрд╢рди рд╣реИред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдкрдВрдЬреАрдХреГрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рдЕрдм рддрдХ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреАрдЬреЛрдВ рдХреЛ рдФрд░ рднреА рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдордиреЗ рдЕрднреА рднреА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдП рд╣реИрдВ:
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж, рдкреБрдирд░рд╛рд░рдВрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ;
- рдЯреНрд░реЗрд╕рдмрд┐рд▓рд┐рдЯреА рдирд╣реАрдВ: рдСрдкрд░реЗрд╢рди рдореЗрдВ рдбрд╛рд▓реЗ рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░реЗрдВ?
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХреЗрдВрджреНрд░реАрдХреГрдд рд╣реИ; рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд╣рд▓реВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП;
- рд╕реБрд░рдХреНрд╖рд╛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕рдорд░реНрдерди рдирд╣реАрдВред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рд╣реЗрдЬрдХрд░ рдФрд░ рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк Git рдпрд╛ рддреЛрдбрд╝рдлреЛрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╕рддреНрдпрд╛рдкрди рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рджреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЕрднреА рднреА рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рдХреА рдУрд░ рдореБрдбрд╝реЗрдВред рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд┐рдЧ рд╕рд░реНрд╡рд░ рдПрдХ REST API рд╣реИ рдЬрд┐рд╕реЗ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗред рд╕рд░реНрд╡рд░ рднреА рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдмреАрдЪ рдПрдХ рдордзреНрдпрд╕реНрде рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ рд╕реЗрд╡рд╛ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕реЗрд╡рд╛ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдХреВрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рдирдП рд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд░рд┐рдлреНрд░реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд┐рдП рдмрд┐рдирд╛ рдлрд┐рд░ рд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧ рд╕рд░реНрд╡рд░ рдЬреИрд╕реА рддрдХрдиреАрдХреЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рд╣реЗрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИрдВред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЗрд╕ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЛ рдордВрдЪ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд▓рд╛рдЙрдб рдлрд╛рдЙрдВрдбреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд╕реЗрд╡рд╛ рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣ рдХреА рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдлрд┐рд░ рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрд╡рд╛ рдХреЛ рдХрд╣рд╛рдВ рдЦреЛрдЬрдирд╛ рд╣реИред рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдордзреНрдпрд╕реНрде рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдпрд╛ рдбрд┐рд╕реНрдХ рд╕реЗ Git рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред org.springframework.cloud: рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ (рдЙрджрд╛рд╣рд░рдг 3.8) рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХреНрд▓рд╛рдЙрдб-рдХреЙрдиреНрдлрд┐рдЧ-рд╕рд░реНрд╡рд░ред
рдЙрджрд╛рд╣рд░рдг 3.8ред рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, @EnableConfigServer рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
package demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer; (1) @SpringBootApplication @EnableConfigServer public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
(1) @EnableConfigServer рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг 3.9 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг 3.9ред Src / рдореБрдЦреНрдп / рд╕рдВрд╕рд╛рдзрди / application.yml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
server.port = 8888
spring.cloud.config.server.git.uri = \
github.com/cloud-native-java/config-server-configuration-repository (1)
(1) рдПрдХ рд╡рд░реНрдХрд┐рдВрдЧ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рд╕рдВрдХреЗрдд рдЬреЛ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд╣реИ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реБрд▓рдн рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GitHub (https://github.com/)) рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд┐рдЧ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрд╡рд╛ рдХреЛ рдЧрд┐рдЯрд╣рдм рдкрд░ рдЬреАрдЖрдИрдЯреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдиреНрдп GIT URI рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, рдЙрд╕реЗ Git рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЖрдк рд╕рдмрд╡рд░реНрд╕рди рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ)ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣рдг URI рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд╣реИ, рд▓реЗрдХрд┐рди -D рддрд░реНрдХ рд╕реЗ, рддрд░реНрдХ рд╕реЗ, рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗ рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
┬╗рдкреБрд╕реНрддрдХ рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ
┬╗
рд╕рд╛рдордЧреНрд░реА┬╗
рдЕрдВрд╢рдЬрд╛рд╡рд╛ рдлрд╝рд╛рд░реНрдореЗрдиреНрдЯрд░реНрд╕ -
рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреВрдкрди рдкрд░ 20% рдХреА рдЫреВрдЯ