рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдорд╛рдПрдВ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдмрд╣реБрдд рдмрд╛рд░ рдРрд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдП рдмрд┐рдирд╛ рдореБрдХреНрдд рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг EJB 3, JUnit 4, JSF 2, рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ 3, рдЖрджрд┐ рдЬреИрд╕реЗ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдорд┐рд▓реЗрдЧреАред

рдЗрд╕рд▓рд┐рдП, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореБрдЭреЗ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрддрд┐рд╢реАрд▓ (рд░рди-рдЯрд╛рдЗрдо) рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬреЛ рдЧреБрдгреЛрдВ (рдорд╛рдирдЪрд┐рддреНрд░ рдХреБрдВрдЬреА-рдореВрд▓реНрдп) рдХреЛ рд▓реМрдЯрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдХрд░реНрдиреЗрд▓ рдпрд╛ рдПрдХ рдЖрджрд┐рдо рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдПрдХ рдЕрдиреНрдп рдЙрдкрд╛рдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдкреВрд░реНрдг рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрдирд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдХрд┐рд╕реА рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд░рд╛рд╣рдд рджреЗрдВ, рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╢реИрд▓реА рдореЗрдВ рдирд╛рдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдФрд░ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рд┐рдирд┐рдпрдорд┐рдд рди рдХрд░реЗрдВред рдФрд░ рддрд░реАрдХреЛрдВ рдХреА рдХреЙрд▓рд┐рдВрдЧ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред

рддреЛ, рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:
1. рдкрд╣рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕:
public interface ServiceAsMap {   Map<String, Object> getValue(); } public interface ServiceAsObject {   Object getValue(); } 

рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
 public class UserData implements ServiceAsMap {  public Map<String, Object> getValue() {    Map<String, Object> result = new HashMap<String, Object>();    result.put("user.home", "/home/dev");    result.put("user.name", "dev");    return result;  } } public class UserDataObj implements ServiceAsObject {  public Object getValue() {    return context.getUser();  } } 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИред
рдЕрдм рджреВрд╕рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ (рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ):
 @Service public class UserData {  public User getUser() {    return context.getUser();  }  public Map<String, String> getProperties() {    Map<String, Object> result = new HashMap<String, Object>();    result.put("user.home", "/home/dev");    result.put("user.name", "dev");    return result;  }  @PropertyName("age")  public int getUserAge() {    return 25;  } } 

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

рдкреНрд░рд┐рдп habrazhiteli, рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реВрдВ рджреВрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдЕрдиреНрдп рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдХреЗрд╡рд▓ рдирд┐рд░реНрдгрдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╡рдХрд╛рд▓рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдРрд╕реЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдирд┐рд░реНрдгрдп рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗрд╡рд▓ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░реЗрдЧрд╛ред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles