← Назад к вопросам

Использует ли Spring Boot Spring Core

2.0 Middle🔥 261 комментариев
#Spring Boot и Spring Data#Spring Framework

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Ответ: Использует ли Spring Boot Spring Core?

Да, Spring Boot полностью использует Spring Core как свою основу. Однако подход различается: Spring Boot предоставляет высокоуровневую абстракцию над Spring Framework, скрывая сложность конфигурации.

Архитектурное соотношение:

Spring Boot
    ↓
  (использует)
    ↓
Spring Framework (Spring Core, Spring MVC, Spring Data и т.д.)
    ↓
  (основана на)
    ↓
Java Standard Library

Как Spring Boot использует Spring Core:

1. IoC контейнер и Dependency Injection

Spring Boot по-прежнему использует ApplicationContext из Spring Core для управления бинами:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        // Это создаёт Spring ApplicationContext под капотом
        SpringApplication.run(Application.class, args);
    }
}

@Component
public class UserService {
    // Spring Core управляет этим бином
}

@RestController
public class UserController {
    @Autowired  // Spring Core инъекция
    private UserService userService;
}

2. Bean Management (управление бинами)

Всё ещё используется механизм регистрации и управления бинами Spring Core:

@Configuration
public class AppConfig {
    @Bean
    public DataSource dataSource() {
        // Spring Core создаст этот бин
        return new HikariDataSource();
    }
}

3. Spring Expression Language (SpEL)

Spring Boot поддерживает SpEL из Spring Core:

@Value("${app.name:DefaultApp}")  // SpEL из Spring Core
private String appName;

@Value("#{systemProperties['java.version']}")
private String javaVersion;

4. Aspect-Oriented Programming (AOP)

Mechanизм AOP из Spring Core всё ещё работает в Spring Boot:

@Aspect
@Component
public class LoggingAspect {
    @Before("execution(* com.example.service.*.*(..))")
    public void logBefore(JoinPoint joinPoint) {
        // Spring Core AOP
    }
}

Различия между Spring Core и Spring Boot:

Spring Core (ручная конфигурация):

public class SpringCoreApp {
    public static void main(String[] args) {
        // Нужна ручная конфигурация
        ApplicationContext context = 
            new ClassPathXmlApplicationContext("applicationContext.xml");
        
        // Ручная регистрация бинов
        UserService service = context.getBean(UserService.class);
    }
}

// applicationContext.xml
/*
<beans>
    <bean id="userService" class="com.example.UserService"/>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="url" value="jdbc:mysql://localhost/db"/>
    </bean>
</beans>
*/

Spring Boot (автоматическая конфигурация):

@SpringBootApplication
public class BootApp {
    public static void main(String[] args) {
        // Spring Boot автоматически настраивает всё
        SpringApplication.run(BootApp.class, args);
    }
}

// application.properties
// spring.datasource.url=jdbc:mysql://localhost/db
// Остальное Spring Boot настраивает сам

Что Spring Boot добавляет поверх Spring Core:

1. Auto-configuration (автоматическая конфигурация)

// Spring Boot автоматически создаёт DataSource
// если видит jdbc в classpath
@Autowired
private DataSource dataSource;

2. Embedded Server (встроенный сервер)

// Spring Boot включает Tomcat/Netty
// не требуется деплоить WAR файл

3. Starter Dependencies (упрощённые зависимости)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Это автоматически подтягивает нужные модули Spring Core -->

4. Convention over Configuration (соглашения)

// Spring Boot автоматически сканирует пакет где находится @SpringBootApplication
// не требуется писать <context:component-scan/> как в Spring Core

Зависимости в Maven:

<!-- Spring Boot зависит от Spring Core -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Это автоматически подтягивает: -->
<!-- org.springframework:spring-core -->
<!-- org.springframework:spring-context -->
<!-- org.springframework:spring-webmvc -->
<!-- и другие модули Spring Framework -->

Заключение:

Spring Boot не заменяет Spring Core, а обогащает его функциональностью. Все основные концепции Spring Core (IoC, DI, AOP, beans) остаются в основе Spring Boot. Главное отличие в том, что Spring Boot автоматизирует конфигурацию, позволяя разработчикам писать приложения быстрее, следуя принципу "Convention over Configuration".