0
点赞
收藏
分享

微信扫一扫

SpringBoot入门教程

        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 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>${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 中添加依赖:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>my-spring-boot-starter</artifactId>
    <version>0.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 的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

然后添加 Jetty 的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

接下来,创建一个 Jetty 配置类:

@Configuration
public class JettyConfig {
    @Bean
    public Server server() {
        return new Server();
    }

    @Bean
    public 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 的依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>${mybatis.boot.version}</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.version}</version>
</dependency>

        接下来,我们需要配置数据源,让 MyBatis 和 MySQL 进行连接。在 Spring Boot 中,可以使用 application.properties 或 application.yml 进行配置。以下是一个使用 application.properties 配置数据源的例子:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

        在这里,我们指定了 MySQL 的 JDBC 驱动、连接 URL、用户名和密码。

        然后,我们需要创建一个 MyBatis 的配置文件 \src\main\resources\mybatis\mybatis-config.xml。这个配置文件中包含了 MyBatis 的一些基本配置。以下是一个简单的示例配置:

<configuration>
    <settings>
        <setting name="cacheEnabled" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"/>
        <setting name="multipleResultSetsEnabled" value="true"/>
        <setting name="useColumnLabel" value="true"/>
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </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.xml,Mapper.xml如下:

<mapper namespace="com.example.demo.dao.UserMapper">
    <resultMap id="UserMap" type="com.example.demo.entity.User">
        <id column="id" property="id" javaType="int"/>
        <result column="name" property="name" javaType="String"/>
        <result column="age" property="age" javaType="int"/>
    <resultMap/>

        至此,SpringBoot开发的流程就结束了,下期再见!

举报

相关推荐

0 条评论