Spring XML Bean Yapılandırması ile Açıklama Tabanlı Karşılaştırması
Ayrıntılı Spring XML bean tanımlarını Spring Boot'ta özlü açıklama tabanlı yapılandırmayla değiştirin.
<!-- applicationContext.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userRepository"
class="com.example.UserRepository">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="userService"
class="com.example.UserService">
<property name="repository" ref="userRepository"/>
</bean>
</beans>
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Repository
public class UserRepository {
private final JdbcTemplate jdbc;
public UserRepository(JdbcTemplate jdbc) {
this.jdbc = jdbc;
}
}
@Service
public class UserService {
private final UserRepository repository;
public UserService(UserRepository repository) {
this.repository = repository;
}
}
XML yok
@SpringBootApplication, bileşen taramayı ve otomatik yapılandırmayı tetikler; tüm XML bağlama dosyalarını ortadan kaldırır.
Kurucu enjeksiyon
Spring, bağımlılıkları otomatik olarak kurucular aracılığıyla enjekte eder; bean'leri test etmeyi ve anlamayı kolaylaştırır.
Otomatik yapılandırma
Spring Boot, DataSource, JPA ve diğer altyapıyı classpath'ten sıfır şablon kodla yapılandırır.
Spring Boot 1.0'dan (Nisan 2014) itibaren geniş çapta kullanılabilir; Spring Boot 3 Java 17+ gerektirir
Geleneksel Spring uygulamaları, her sınıfı ve bağımlılıklarını ayrıntılı <bean> öğeleri olarak bildiren XML yapılandırma dosyaları aracılığıyla bean'leri bağlardı. Spring 2.5'ten itibaren açıklama desteği mevcut olsa da Spring Boot otomatik yapılandırmayı tanıtana kadar XML baskın yaklaşım olmaya devam etti. Spring Boot, classpath taraması yoluyla @Component, @Service, @Repository ve @Controller ile açıklanmış bean'leri algılar, kurucu enjeksiyon yoluyla bağımlılıkları otomatik karşılar ve classpath'ten DataSource gibi altyapıyı yapılandırır — tüm XML bağlama dosyalarını ortadan kaldırır.