Spring是一个Java企业级应用框架,该框架在应用开发中蕴含了大量的设计模式和最佳实践,并提供了特性多样、功能强大的模块,帮助开发者更好地实现业务功能。而Spring Boot是在Spring基础上进一步简化了Spring的配置和使用,提供了一些约定大于配置的方式,让开发者专注于业务逻辑的实现,而非框架细节。
下面分别从以下几个方面详细讲解Spring和Spring Boot的主要区别:
1. 项目配置
以Spring MVC应用为例,传统的Spring配置需要xml文件声明bean和配置DispatcherServlet,在整个过程中需要编写大量的xml配置文件,下面是一个包含控制器、视图解析器、数据源等配置的例子:
<bean class="com.example.demo.controller.MyController"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.example.demo"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
而使用Spring Boot后,大部分配置也可以通过application.properties(YAML)文件中的属性配置来实现。Spring Boot会根据这些属性自动配置应用程序,极大地降低了配置的复杂性,下面是Spring Boot的配置示例:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
值得注意的是,我们只需要为应用中需要用到的属性配置值即可,Spring Boot会自动进行其他的配合。比如在上述示例中,我们只需为DataSource配置了相关属性,而Hibernate就会自动配置DataSource等其他相关的bean。
2. 代码层面
Spring Boot还带来了一些新特性,使我们能够更加高效地实现某些功能。比如Web应用程序中的许多常见需求,例如静态资源、异常处理、ViewResolver等都直接开箱即用的。下面的示例就是一个标准的Spring Boot Web应用程序:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RestController
public static class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
}
}
在这个示例中,我们没有配置Web MVC组件,但是Spring Boot会自动配置一个EmbeddedTomcat和DispatcherServlet来运行我们的应用程序。同时,我们还定义了一个简单的RestController,它仅提供了一个简单的/hello路由,返回字符串“Hello, world!”。
与传统Spring MVC应用程序相比,这个示例无需进行繁琐的xml配置,我们仅使用了一个@SpringBootApplication注解,它包括三个Spring注解:@Configuration、@EnableAutoConfiguration和@ComponentScan。其中@EnableAutoConfiguration是Spring Boot的主要特性之一,它能够根据类路径自动配置应用程序,而@ComponentScan用于扫描组件以便稍后注入。
3. 生态系统
Spring Boot还提供了大量Spring模块的依赖管理和自动配置,降低了应用程序的依赖和耦合。比如,如果你想将Spring应用程序构建成REST API,并与其他系统进行通信,那么你可以使用Spring Boot的集成测试支持。此外,Spring Boot还包含用于构建SOAP Web服务和Apache Camel集成的支持。
总之,Spring和Spring Boot都是非常优秀的Java开发框架。传统Spring框架强大的功能和可定制性使其能够适用于较大规模的、复杂的企业项目,而Spring Boot则非常适合快速开发小型的、简单的应用程序或微服务架构的项目。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot 和 Spring 到底有啥区别你知道吗 - Python技术站