рд╡рд╕рдВрдд рдореЗрдВ рдЗрдВрдЬреЗрдХреНрд╢рди рд╕рдВрдЧреНрд░рд╣ рдХреА рдХреБрдЫ рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ

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





рдкреГрд╖реНрдарднреВрдорд┐


рд╡рд╕рдВрдд рдореЗрдВ рдЕрдкрдиреЗ рднреАрддрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдЬрд╛рджреВ" рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рдЪреАрдЬреЗрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЬреНрдЮрд╛рдирддрд╛ рдпрд╛ рдЧрд▓рддрдлрд╣рдореА рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред

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

рдкрд░рд┐рджреГрд╢реНрдп


рдЖрдЗрдП рдПрдХ рд╕реЗрд╡рд╛ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдореВрд╡реА рдирд╛рдпрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧреАред рдЙрдирдореЗрдВ рд╕реЗ 3 рд╣реЛрдВрдЧреЗ: рд░реЗрдореНрдмреЛ, рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдФрд░ рдЧрдВрдбрд╛рд▓рдлред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЙрдирдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдЖрдо рд╣реЛрдВрдЧреЗ - рд╣реАрд░реЛред

public class Hero {
}

@Component
public class Rambo extends Hero {

    @Override
    public String toString() {
        return "Rambo";
    }
}

@Component
public class Terminator extends Hero {

    @Override
    public String toString() {
        return "Terminator";
    }
}


@Component
public class Gandalf extends Hero {
    @Override
    public String toString() {
        return "Gandalf";
    }
}

рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реВрдЪреА


рдЖрдЗрдП рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЖрддрдВрдХрд╡рд╛рджрд┐рдпреЛрдВ рдХреЗ рдирд╛рдпрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧреАред рд╕рдВрднрд╡рддрдГ, рдЖрдкрдХреЛ рдРрд╕реЗ рдирд╛рдпрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЗрд╕рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реИ! рдПрдХ рд╕реЗрд╡рд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдПрдБ:

@Service
@Getter
public class ActionHeroesService {
    @Autowired
    List<Hero> actionHeroes;
}

@Configuration
public class HeroesConfig {

    @Bean
    public List<Hero> action() {
        List<Hero> result = new ArrayList<>();
        result.add(new Terminator());
        result.add(new Rambo());
        return result;
    }
}

рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЧрдВрдбрд╛рд▓рдл рд╕реВрдЪреА рдореЗрдВ рд╣реИ!

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

рд╣рдо рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕рдВрдд рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

рд╡рд┐рдХрд▓реНрдк 1. рдХреНрд░рдЪ


рдЪреВрдБрдХрд┐ рдЬрд╛рд╡рд╛ рд╕рдВрдЧреНрд░рд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдмрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ ArrayList рдХреЗ рд╕рд╛рде рд╕реВрдЪреА рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рддрд╛рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓ рдЬрд╛рдП рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рдЪрд▓реЗрдЧрд╛ рдЬреИрд╕реА рд╣рдореЗрдВ рдЙрдореНрдореАрдж рдереАред

@Configuration
public class HeroesConfig {

    @Bean
    public ArrayList<Hero> action() {
        ArrayList<Hero> result = new ArrayList<>();
        result.add(new Terminator());
        result.add(new Rambo());
        return result;
    }
}

@Service
@Getter
public class ActionHeroesService {
    @Autowired
    ArrayList<Hero> actionHeroes;
}

рд╡рд┐рдХрд▓реНрдк 2. рдЕрдзрд┐рдХ рд╕рд╣реА


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

@Service
@Getter
public class ActionHeroesService {
    @Autowired
    @Qualifier("action")
    List<Hero> actionHeroes;
}

рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдирдХреНрд╢реЗ


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

@Service
@Getter
public class MainCharactersService {
    @Autowired
    Map<String, Hero> mainCharactersByFilmName;
}

@Configuration
public class HeroesConfig {

    @Bean
    public Map<String, Hero> mainCharactersByFilmName() {
        Map<String, Hero> result = new HashMap<>();

        result.put("rambo", new Rambo());
        result.put("terminator", new Terminator());
        result.put("LOTR", new Gandalf());

        return result;
    }
}

рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЧрдВрдбрд╛рд▓рдл рдХреА рдХреБрдВрдЬреА LOTR рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЧреИрдВрдбрд▓рдл рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрд╕ рдлрд┐рд▓реНрдо рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдерд╛ рдЬрд┐рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдмрд▓реНрдХрд┐ рдмреАрди рдХрд╛ рдирд╛рдо рдерд╛, рдЬрдмрдХрд┐ рд░рд┐рдореНрдмрд╛рдЙрдб рдФрд░ рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╕рд┐рд░реНрдл рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛: рдореБрдЦреНрдп рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдлрд┐рд▓реНрдо рдХреЗ рд╢реАрд░реНрд╖рдХред

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

рд╡рд░реНрдХрдЖрд░реНрдбреНрд╕ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ рдЬреЛ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рдереЗ:

рд╡рд┐рдХрд▓реНрдк 1. рдХреНрд░рдЪ


рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд╣рд╛рд╢рдк рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ:

@Service
@Getter
public class MainCharactersService {
    @Autowired
    HashMap<String, Hero> mainCharactersByFilmName;
}


@Configuration
public class HeroesConfig {

    @Bean
    public HashMap<String, Hero> mainCharactersByFilmName() {
        HashMap<String, Hero> result = new HashMap<>();

        result.put("rambo", new Rambo());
        result.put("terminator", new Terminator());
        result.put("LOTR", new Gandalf());

        return result;
    }
}

рд╡рд┐рдХрд▓реНрдк 2. рдЕрдзрд┐рдХ рд╕рд╣реА


рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рдЬреЛрдбрд╝реЗрдВ:

@Service
@Getter
public class MainCharactersService {
    @Autowired
    @Qualifier("mainCharactersByFilmName")
    Map<String, Hero> mainCharactersByFilmName;
}

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


All Articles