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();
}
}