如企业网站模板下载,机电类网站模板,网站优化快速排名软件,手机软件app开发Spring Boot 是由Spring框架团队推出的一款用来简化Spring应用程序创建和开发过程的框架#xff0c;它基于Spring框架#xff0c;使用约定优于配置#xff0c;大大简化了Spring应用程序的配置和开发过程。在很多企业中#xff0c;Spring Boot 已经被广泛应用#xff0c;成… Spring Boot 是由Spring框架团队推出的一款用来简化Spring应用程序创建和开发过程的框架它基于Spring框架使用约定优于配置大大简化了Spring应用程序的配置和开发过程。在很多企业中Spring Boot 已经被广泛应用成为了构建微服务的首选框架之一。 Spring Boot 入门的教程已经有很多了本篇文章将讲解一些 Spring Boot 进阶的话题旨在帮助读者更好的理解 Spring Boot 的高级特性并能在实际项目中更好地运用。
一、Spring Boot自定义Starter Spring Boot 自定义 Starter 可以让我们将一些特定场景中常用的配置、依赖和代码封装起来使得在这种场景下启动一个新的应用程序变得非常容易。Spring Boot 提供了对自定义 Starter 的支持下面我们来看一个简单的例子。
首先我们需要创建一个 Maven 项目名为 my-spring-boot-starter。在 pom.xml 中添加以下依赖
dependencies!-- Spring Boot 依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion${spring.boot.version}/version/dependency
/dependencies接下来创建一个自定义的 Starter 类。这个 Starter 类只需要继承 org.springframework.boot.autoconfigure.EnableAutoConfiguration 类即可
EnableAutoConfiguration
public class MySpringBootStarter {
}这个 Starter 类只是一个空类不过它的存在可以让 Spring Boot 自动扫描到这个类并且会自动进行一些配置比如自动注入一些 Bean 等等。在本例中由于我们没有做任何配置所以没什么用处。 我们先把这个 Starter 发布到本地仓库然后就可以在其他项目中使用了。下面我们在一个新的 Spring Boot 项目中使用我们的 Starter
在 pom.xml 中添加依赖
dependencygroupIdcom.example/groupIdartifactIdmy-spring-boot-starter/artifactIdversion0.0.1-SNAPSHOT/version
/dependency然后在 Application 类上添加注解
SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}这样我们就完成了一个最简单的 Spring Boot 自定义 Starter。当然实际的 Starter 中还可以包含一些配置类、Bean、拦截器等等以满足不同场景的需求。
二、Spring Boot自动装配 Spring Boot 自动装配是通过扫描 classpath 中的 jar 包来实现的。当 Spring Boot 从 classpath 中发现一个 jar 包时它会尝试自动配置这个 jar 包中的 Bean这样就可以极大地简化配置。 在很多情况下我们都用不到所有的自动配置。比如如果我们使用 Spring Boot 的 WebMVC 功能那么 Spring Boot 会自动配置 Tomcat 的嵌入式 Servlet 容器这样就可以让我们快速地启动一个嵌入式的 Web 服务。但是如果我们不需要 Tomcat 容器而是想使用 Jetty 容器这时候我们就可以通过禁用 Spring Boot 的 Tomcat 自动配置然后自己手动配置 Jetty。 下面我们来看一个例子在 Spring Boot 中禁用 Tomcat 自动配置然后手动配置 Jetty。
首先在 pom.xml 中移除 Tomcat 的依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactId/exclusion/exclusions
/dependency然后添加 Jetty 的依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jetty/artifactId
/dependency接下来创建一个 Jetty 配置类
Configuration
public class JettyConfig {Beanpublic Server server() {return new Server();}Beanpublic JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory(Server server) {JettyEmbeddedServletContainerFactory factory new JettyEmbeddedServletContainerFactory();factory.setServer(server);return factory;}
}在这个配置类中我们创建了一个 Jetty 的 Server 实例并将其注入到 JettyEmbeddedServletContainerFactory 中。这样当我们启动 Spring Boot 应用程序时它将使用我们自己创建的 Jetty 容器而不是默认的 Tomcat 容器。
三、Spring Boot集成MyBatis MyBatis 是一款优秀的 ORM 框架它可以非常方便地使用 SQL 语句操作数据库。在实际项目中我们经常使用 MyBatis 来访问数据库。下面我们来看一下如何在 Spring Boot 中集成 MyBatis。 首先我们需要在 pom.xml 中添加 MyBatis 和 MySQL 的依赖
dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis.boot.version}/version
/dependency
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version
/dependency接下来我们需要配置数据源让 MyBatis 和 MySQL 进行连接。在 Spring Boot 中可以使用 application.properties 或 application.yml 进行配置。以下是一个使用 application.properties 配置数据源的例子
spring.datasource.driver-class-namecom.mysql.jdbc.Driver
spring.datasource.urljdbc:mysql://localhost:3306/test?serverTimezoneAsia/ShanghaicharacterEncodingutf8useSSLfalse
spring.datasource.usernameroot
spring.datasource.passwordroot在这里我们指定了 MySQL 的 JDBC 驱动、连接 URL、用户名和密码。 然后我们需要创建一个 MyBatis 的配置文件 \src\main\resources\mybatis\mybatis-config.xml。这个配置文件中包含了 MyBatis 的一些基本配置。以下是一个简单的示例配置
configurationsettingssetting namecacheEnabled valuetrue/setting namelazyLoadingEnabled valuetrue/setting nameaggressiveLazyLoading valuefalse/setting namemultipleResultSetsEnabled valuetrue/setting nameuseColumnLabel valuetrue/setting nameautoMappingBehavior valuePARTIAL/setting namedefaultExecutorType valueSIMPLE/setting namemapUnderscoreToCamelCase valuetrue//settings
/configuration在这个配置文件中我们设置了一些 MyBatis 的默认配置选项比如启用缓存、启用懒加载、使用驼峰命名法等等。 接下来我们需要编写 Mapper 接口和对应的 SQL 映射文件。Mapper 接口用于定义对数据库的操作而 SQL 映射文件用于描述具体的 SQL 语句以及参数、返回类型等。以下是一个 Mapper 接口和对应的 SQL 映射文件的例子
Mapper
public interface UserMapper {Select(select * from user where id#{id})User getUserById(int id);Insert(insert into user(id,name,age) values(#{id},#{name},#{age}))int addUser(User user);
}Mapper中如果定义了SQL那么就不需要定义Mapper.xmlMapper.xml如下
mapper namespacecom.example.demo.dao.UserMapperresultMap idUserMap typecom.example.demo.entity.Userid columnid propertyid javaTypeint/result columnname propertyname javaTypeString/result columnage propertyage javaTypeint/resultMap/至此SpringBoot开发的流程就结束了下期再见