html
рдЕрдкрдиреЗ Spring Boot рдмреНрд▓реЙрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛
рд╕рд╛рдордЧреНрд░реА рддрд╛рд▓рд┐рдХрд╛
- рдкрд░рд┐рдЪрдп
- рд╕реАрдб рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рдирд╛
- рдореЙрдбрд▓ рд╕рддреНрдпрд╛рдкрди рд▓рд╛рдЧреВ рдХрд░рдирд╛
- рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдЕрджреНрдпрддрди рдХрд░рдирд╛
- рд╕рддреНрдпрд╛рдкрди рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛
- рдЕрдкрдиреЗ рд╕рддреНрдпрд╛рдкрди рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛
- рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг
- рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд░рд┐рдЪрдп
рдордЬрдмреВрдд рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рджреЛрдиреЛрдВ рдкрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Spring Boot рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рд╕рддреНрдпрд╛рдкрди рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВред рдпрд╣ eBook рдЖрдкрдХреЗ Spring Boot рдмреНрд▓реЙрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИ, рд╢реБрд░реБрдЖрддреА рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдЬреНрдЮрд╛рди рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рддреНрдпрд╛рдкрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдореЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рддреА рд╣реИред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдорд╣рддреНрд╡
- рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛: рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рд╣реА рд╕рдВрд╕рд╛рдзрд┐рдд рдФрд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╕реБрд░рдХреНрд╖рд╛: рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЗрдирдкреБрдЯ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдФрд░ рд╕рдВрддреБрд╖реНрдЯрд┐ рдмрдврд╝рддреА рд╣реИред
рдЗрд╕ рдЧрд╛рдЗрдб рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп
- рд╕рд╣реА рд╕рддреНрдпрд╛рдкрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдб рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рдирд╛ред
- рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рджреЛрдиреЛрдВ рд╕рддреНрдпрд╛рдкрди рд▓рд╛рдЧреВ рдХрд░рдирд╛ред
- Spring Boot рдореЗрдВ рд╕рддреНрдпрд╛рдкрдиреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдирд┐рд╡рд╛рд░рдг рдХрд░рдирд╛ред
рд╕реАрдб рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рдирд╛
рд╕рддреНрдпрд╛рдкрдиреЛрдВ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЙрддрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕реАрдб рдбреЗрдЯрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рд╕реАрдб рдбреЗрдЯрд╛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реАрдб рдбреЗрдЯрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг
- рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдг рдЖрд░рдВрдн рдХрд░рдирд╛:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдпреБ, рдЬрдиреНрдорддрд┐рдерд┐ рдФрд░ рд▓рд┐рдВрдЧ рдЬреИрд╕реЗ рдЧреБрдг рд╕реЗрдЯ рдХрд░реЗрдВред
- рдЙрджрд╛рд╣рд░рдг:
123account1.setAge(25);account1.setDateOfBirth(LocalDate.parse("1990-01-01"));account1.setGender("Male"); - рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХрд░рдирд╛:
- рдЕрдкрдиреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рд╡рд┐рд╡рд┐рдзрддрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЦрд╛рддреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
- рдЙрджрд╛рд╣рд░рдг:
12account2.setAge(30);account2.setGender("Female");
рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕
- рд╕рдВрдЧрддрд┐: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рднреА рд╕реАрдб рдбреЗрдЯрд╛ рдПрдХ рд╣реА рдкреНрд░рд╛рд░реВрдк рдФрд░ рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред
- рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рд▓рдЪреАрд▓рд╛рдкрди: рд╡рд┐рднрд┐рдиреНрди рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдб рдбреЗрдЯрд╛ рдореЗрдВ рдЖрд╕рд╛рди рд╕рдВрд╢реЛрдзрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред
рдореЙрдбрд▓ рд╕рддреНрдпрд╛рдкрди рд▓рд╛рдЧреВ рдХрд░рдирд╛
рд╕рддреНрдпрд╛рдкрди рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдореЙрдбрд▓ рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЗ рднреАрддрд░ рд╕рдВрднрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред Spring Boot рдореЗрдВ, рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдкреЛрд╕реНрдЯ рдореЙрдбрд▓ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдЬреЛрдбрд╝рдирд╛
- рдкреЛрд╕реНрдЯ рдореЙрдбрд▓ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдВ:
- рдЦреЛрд▓реЗрдВ Post.java рдЬреЛ src/main/java/org/studyeasy/SpringBlog/models/ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред
- рд╕рддреНрдпрд╛рдкрди рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ:
- рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @NotBlank рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХрд┐ рдлреАрд▓реНрдб рдЦрд╛рд▓реА рди рд╣реЛред
- рдЙрджрд╛рд╣рд░рдг:
12345@NotBlank(message = "рдкреЛрд╕реНрдЯ рд╢реАрд░реНрд╖рдХ рдЖрд╡рд╢реНрдпрдХ рд╣реИ")private String title;@NotBlank(message = "рдкреЛрд╕реНрдЯ рд╢рд░реАрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ")private String body; - рд╕рддреНрдпрд╛рдкрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдлрд╛рдпрджреЗ:
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ: Spring Boot рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд╛рд░реНрдердХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдХреЛрдб рдХреА рдмреЛрдЗрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдирд╛: рдПрдиреЛрдЯреЗрд╢рди рд╡реНрдпрд╛рдкрдХ рдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред
рдкреНрд░рдореБрдЦ рд╕рддреНрдпрд╛рдкрди рдПрдиреЛрдЯреЗрд╢рди
- @NotNull: рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлреАрд▓реНрдб
null
рдирд╣реАрдВ рд╣реИред - @Size: рдХрд┐рд╕реА рдлреАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ рдХреА рд╕реАрдорд╛рдПрдБ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
- @Email: рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлреАрд▓реНрдб рдореЗрдВ рдПрдХ рдорд╛рдиреНрдп рдИрдореЗрд▓ рдкрддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдЕрджреНрдпрддрди рдХрд░рдирд╛
рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд░реНрд╡рд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рджреГрд╢реНрдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг
- рдкреЛрд╕реНрдЯ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ HTML рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:
- рдЦреЛрд▓реЗрдВ post_add.html рдФрд░ post_edit.html рдЬреЛ src/main/resources/templates/post_views/ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред
- рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝реЗрдВ:
- рдЗрдирдкреБрдЯ рдлреАрд▓реНрдбреНрд╕ рдХреЗ рдиреАрдЪреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдбрд╛рд▓реЗрдВред
- рд╢реАрд░реНрд╖рдХ рдлреАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг:
12<input type="text" name="title" placeholder="рдкреЛрд╕реНрдЯ рд╢реАрд░реНрд╖рдХ рджрд░реНрдЬ рдХрд░реЗрдВ" required><span class="error-message">рдпрд╣рд╛рдВ рд╢реАрд░реНрд╖рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢</span> - рдЖрд╡рд╢реНрдпрдХ рдЧреБрдг рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
- рдЕрдирд┐рд╡рд╛рд░реНрдп рдлреАрд▓реНрдбреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
required
рдЧреБрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред - рдЙрджрд╛рд╣рд░рдг:
1<textarea name="body" required></textarea> - рдЕрдирд┐рд╡рд╛рд░реНрдп рдлреАрд▓реНрдбреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- рдПрдбрд┐рдЯрд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛:
- рдЬрдм рдЖрдк рд░рд┐рдЪ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрди рд╕рдВрдШрд░реНрд╖ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕реЗ рдлреАрд▓реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рд╕рд░рд▓ рдХрд░рдиреЗ рдпрд╛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдЬрд╛рдБрдЪ рдкрд░ рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рд╕реНрдирд┐рдкреЗрдЯ
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<form action="/addPost" method="post"> <div> <label for="title">рд╢реАрд░реНрд╖рдХ</label> <input type="text" id="title" name="title" required> <span class="error-message">рд╢реАрд░реНрд╖рдХ рдЖрд╡рд╢реНрдпрдХ рд╣реИред</span> </div> <div> <label for="body">рд╢рд░реАрд░</label> <textarea id="body" name="body" required></textarea> <span class="error-message">рд╢рд░реАрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИред</span> </div> <button type="submit">рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ</button> </form> |
рд╕рддреНрдпрд╛рдкрди рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛
рдирд┐рдпрдВрддреНрд░рдХ рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рд╕рддреНрдпрд╛рдкрдиреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрд╡реИрдз рдбреЗрдЯрд╛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдлреИрд▓ рди рд╕рдХреЗред
PostController рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг
- PostController рдЦреЛрд▓реЗрдВ:
- src/main/java/org/studyeasy/SpringBlog/controller/PostController.java рдкрд░ рд╕реНрдерд┐рддред
- BindingResult рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
- рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ BindingResult рддреБрд░рдВрдд рдмрд╛рдж @ModelAttribute рдЖрддрд╛ рд╣реИред
- рдЙрджрд╛рд╣рд░рдг:
12345678@PostMapping("/addPost")public String addPost(@Valid @ModelAttribute("post") Post post, BindingResult bindingResult, Model model) {if (bindingResult.hasErrors()) {return "post_add";}postService.save(post);return "redirect:/home";} - рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВ:
bindingResult.hasErrors()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред- рдпрджрд┐ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдореМрдЬреВрдж рд╣реИрдВ рддреЛ рдЙрдЪрд┐рдд рджреГрд╢реНрдп рд╡рд╛рдкрд╕ рдХрд░реЗрдВред
- рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛:
- рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреНрд░рдо рдмрдирд╛рдП рд░рдЦреЗрдВ: @ModelAttribute рдХреЗ рдмрд╛рдж BindingResultред
- рдЧрд▓рдд рдХреНрд░рдо рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓рддрд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рд╕реНрдирд┐рдкреЗрдЯ
1 2 3 4 5 6 7 8 9 |
@PostMapping("/editPost/{id}") public String editPost(@PathVariable("id") long id, @Valid @ModelAttribute("post") Post post, BindingResult bindingResult, Model model) { if (bindingResult.hasErrors()) { model.addAttribute("post", post); return "post_edit"; } postService.update(id, post); return "redirect:/home"; } |
рдЕрдкрдиреЗ рд╕рддреНрдпрд╛рдкрди рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛
рдПрдХ рдмрд╛рд░ рд╕рддреНрдпрд╛рдкрди рд▓рд╛рдЧреВ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЪрд░рдг
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдПрдВ:
- рдЕрдкрдиреЗ Spring Boot рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рд╣реЛрдо рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВред
- рдЦрд╛рд▓реА рдкреЛрд╕реНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
- рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рджрд░реНрдЬ рдХрд┐рдП рдмрд┐рдирд╛ "Add Post" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
- рд╢реАрд░реНрд╖рдХ рдФрд░ рд╢рд░реАрд░ рджреЛрдиреЛрдВ рдлреАрд▓реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВред
- рдЕрдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдореМрдЬреВрджрд╛ рдкреЛрд╕реНрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
- рдПрдХ рдореМрдЬреВрджрд╛ рдкреЛрд╕реНрдЯ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЦрд╛рд▓реА рдлреАрд▓реНрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
- рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ рдЙрдкрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВред
- рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
- рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ рд╕рднреА рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрдирдкреБрдЯ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВред
рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо
- рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлреАрд▓реНрдб рдЕрдорд╛рдиреНрдп рд╣реИрдВред
- рдХреЛрдИ рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬрд╛ рдирд╣реАрдВ рдЧрдпрд╛: рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдЕрд╡реИрдз рдбреЗрдЯрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд╕реБрдЧрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡: рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рд╕реБрдЪрд╛рд░реВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рднрд▓реЗ рд╣реА рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдП рд╣реЛрдВред
рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг
рд╕рддреНрдпрд╛рдкрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдХрднреА-рдХрднреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЪреБрдиреМрддрд┐рдпрд╛рдВ рдЖ рд╕рдХрддреА рд╣реИрдВред рдиреАрдЪреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рджреА рдЧрдИ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдк рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рджрд┐рдП рдЧрдП рд╣реИрдВред
1. BindingResult рдХрд╛ рдЧрд▓рдд рд╕реНрдерд╛рди
- рд╕рдорд╕реНрдпрд╛:
BindingResult
рдХреЛ@ModelAttribute
рд╕реЗ рдкрд╣рд▓реЗ рд░рдЦрдирд╛ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред - рд╕рдорд╛рдзрд╛рди: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐
BindingResult
рд╕реАрдзреЗ@ModelAttribute
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд╛рдж рдЖрддрд╛ рд╣реИред
2. @Valid
рдПрдиреЛрдЯреЗрд╢рди рдЧрд╛рдпрдм рд╣реЛрдирд╛
- рд╕рдорд╕реНрдпрд╛:
@Valid
рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдмрд┐рдирд╛, рдореЙрдбрд▓ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрддреЗред - рд╕рдорд╛рдзрд╛рди: рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдореЙрдбрд▓ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЛ
@Valid
рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд░реЗрдВред
1 |
public String addPost(@Valid @ModelAttribute("post") Post post, BindingResult bindingResult) |
3. рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрди рд╕рдВрдШрд░реНрд╖
- рд╕рдорд╕реНрдпрд╛: рд░рд┐рдЪ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░реНрд╕ рдпрд╛ рдХрд╕реНрдЯрдо рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрдиреЛрдВ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕рдорд╛рдзрд╛рди: рд╕рднреА UI рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрдиреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╕рддреНрдпрд╛рдкрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ, рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрдиреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд░рд╣реЗрдВ рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛред
4. рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рджрд┐рдЦрдирд╛
- рд╕рдорд╕реНрдпрд╛: рд╕рддреНрдпрд╛рдкрди рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред
- рд╕рдорд╛рдзрд╛рди: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ HTML рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рд╣реИрдВ рдФрд░ рд╡реЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред
5. рдЧрд▓рдд рд╕рддреНрдпрд╛рдкрди рдПрдиреЛрдЯреЗрд╢рди
- рд╕рдорд╕реНрдпрд╛: рдлреАрд▓реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдЪрд┐рдд рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬреИрд╕реЗ рдХрд┐
@NotEmpty
рдЙрди рдлреАрд▓реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ suited@NotBlank
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред - рд╕рдорд╛рдзрд╛рди: рдкреНрд░рддреНрдпреЗрдХ рдлреАрд▓реНрдб рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА рд╕рддреНрдпрд╛рдкрди рдПрдиреЛрдЯреЗрд╢рди рдЪреБрдиреЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рддреНрдпрд╛рдкрдиреЛрдВ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЕрдиреБрдХреВрд▓ Spring Boot рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рд╣реИред рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕реАрдб рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рдХреЗ, рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рджреЛрдиреЛрдВ рд╕рддреНрдпрд╛рдкрди рд▓рд╛рдЧреВ рдХрд░рдХреЗ, рдФрд░ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдмрд╛рд░реАрдХреА рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдХреЗ, рдЖрдк рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдордЧреНрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рддреЗ рд╣реИрдВред
рдореБрдЦреНрдп рдирд┐рд╖реНрдХрд░реНрд╖
- рд╕рд╣реА рд╕рддреНрдпрд╛рдкрди рд╕реЗрдЯрдЕрдк: рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ, рдЬрд┐рд╕рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЕрдЦрдВрдбрддрд╛ рдмрдиреА рд░рд╣рддреА рд╣реИред
- рдкреНрд░рднрд╛рд╡реА рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдирд┐рд░рд╛рд╢рд╛ рдХрдо рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
- рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг: рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдФрд░ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡реЗ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдВред
рдЗрд╕ рдЧрд╛рдЗрдб рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ, рдЖрдк рдЕрдкрдиреЗ Spring Boot рдмреНрд▓реЙрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрди рд▓рд╛рдЧреВ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдФрд░ рдореЗрдВрдЯреЗрдиреЗрдмрд┐рд▓ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдордЬрдмреВрдд рдиреАрдВрд╡ рдмрдирддреА рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣ рд▓реЗрдЦ AI рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред