Sobes.tech
Junior — Middle

Ի՞նչ տարբերություն կա @Bean և @Component նշանների միջև Spring-ում, և ինչ դեպքերում պետք է օգտագործել:

sobes.tech AI

Պատասխան AI-ից

@Component նշումը օգտագործվում է դասը ինքնաբերաբար հայտնաբերելու և գրանցելու համար որպես Spring-բին՝ բաղադրիչների սկանավորման (component scanning) միջոցով։ Այն անմիջապես կիրառվում է այն դասի վրա, որը պետք է դառնա բին։

@Bean նշումը կիրառվում է @Configuration նշված դասի մեթոդի վրա։ Այս մեթոդը վերադարձնում է օբյեկտ, որը Spring-ը գրանցում է որպես բին։

Հիմնական տարբերությունները՝

  • @Component — դասերի համար, որոնք ինքնաբերաբար հայտնաբերվում են սկանավորման միջոցով։
  • @Bean — ձեռքով ստեղծված բին՝ կոնֆիգուրացիոն դասում։

Երբ օգտագործել՝

  • @Component — երբ դասը ինքնին կոմպոնենտ է և կարող է ինքնաբերաբար գտնվել։
  • @Bean — երբ անհրաժեշտ է ստեղծել բին արտաքին դասից կամ երբ պահանջվում է ավելի բարդ օբյեկտի ստեղծման լոգիկա։

Օրինակ՝

@Component
public class MyService {
    // ...
}

@Configuration
public class AppConfig {
    @Bean
    public MyRepository myRepository() {
        return new MyRepository();
    }
}