Sobes.tech
Junior — Middle

Spring'de @Bean ve @Component anotasyonları arasındaki fark nedir ve hangi durumlarda kullanılmalıdırlar?

sobes.tech yapay zeka

AI'dan gelen yanıt

@Component anotasyonu, bileşen taraması (component scanning) yoluyla sınıfın otomatik olarak Spring bileşiği olarak algılanması ve kaydedilmesi için kullanılır. Bu, doğrudan sınıfın üzerinde uygulanır ve sınıfın bileşik olması gerekir.

@Bean anotasyonu, @Configuration ile işaretlenmiş bir sınıf içindeki metoda uygulanır. Bu metod, Spring tarafından bir bileşik olarak kaydedilecek bir nesne döner.

Ana farklar:

  • @Component — otomatik olarak tarama yoluyla algılanan sınıflar için.
  • @Bean — bir yapılandırma sınıfında manuel olarak bileşik oluşturmak için.

Ne zaman kullanılır:

  • @Component — sınıf kendisi bir bileşen ise ve otomatik olarak bulunabiliyorsa.
  • @Bean — harici bir sınıftan bileşik oluşturulması gerekiyorsa veya daha karmaşık nesne oluşturma mantığı gerekiyorsa.

Örnek:

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

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