SpringBoot 入门

目录

 

一、SpringBoot介绍

二、SpringBoot快速入门

三、SpringBoot常用注解

四、SpringBoot常用配置

五、SpringBoot整合Mybaits


一、SpringBoot介绍

1.1引言

  • 为了使用SSM框架开发,准备SSM框架的模板配置。

  • 为了Spring整合第三方框架,单独的去编写xml文件

  • 导致SSM项目后期xml文件特别多,维护xml文件的成本是很高的。

  • SSM工程部署也是很麻烦,依赖第三方的容器。

  • SSM开发方式是很笨重的。

1.2SpringBoot介绍

SpringBoot是由Pivotal团队研发的,SpringBootg并不是一门新技术, 只是将之前常用的Spring,SpringMVC,data-jpa等常用的框架封装到了一起,帮助你隐藏这些框架的整合细节,实现敏捷开始。

SpringBoot就是一个工具集。

SpringBoot特点:

  • SpringBoot项目不需要模板化的配置

  • 在SpringBoot中整合第三方框架杳,只需要导入相应的starter依赖包,就自动整合了。

  • SpirngBoot默认只有一个.properties的配置文件,不推荐使用xml,后期会采用.java的文件去编写配置信息。

  • SpringBoot工程在部署时,采用的是jar包的方式,内部自动依赖Tomcat容器,提供了多环境的配置。

  • 后期要学习的微服务框架SpringCloud需要建立在SpringBoot的基础上.

二、SpringBoot快速入门

2.1快速构键SpringBoot

1.选择构建项目的类型

 

2、项目的描叙

 

3、指定SpringBoot版本和需要的依赖

 

4、第一次创建SpringBoot工程,下载大量的依赖,保证maven已经配置了阿里云的私服。

修改pom.xml文件中的依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<!--    将上述内容修改为下面的效果-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

5、编写Controll

@RestController
public class TestController {
​
    @GetMapping("/test")
    public String test(){
        return "Hello StringBoot! Start study door";
    }
}

6、启动SpringBoot工程, 运行启动类中的main方法

2.2SpringBoot的目录结构

1、pom.xml文件

1.指定了一个父工程,指定当前工程为SpringBoot,帮助我们声明了starter依赖的版本

2.项目的元数据:包名,项目名,版本号。

3.指定了properties信息:指定了java的版本为1.8

4.导入依赖:默认情况导入spring-boot-starter,spring-boot-starter-test

5.插件: spring-boot-maven-plugin

2、.gitignore文件:默认帮我们忽略了一些文件和目录

3、src目录

-src
    -main
        -java
            -包名
                启动类.java                   #需要将controller类,放在启动类的子包中或者同级包下
        -resources
            -static                     #存放静态资源
            -templates                  #存储模板页面的
            application.properties           #SpringBootr提供的唯一的配置文件
    -test       #只是为了测试用的

2.3 SpringBoot三种启动方式

1、运行启动类的main方法即可运行SpringBoot工程

2、采用maven的命令云运行SpringBoot工程

mvn spring-boot:run

注意:需要配置以下信息

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
</build>

3、采用jar包的方式运行

  • 将当前项目打包成jar mvn clean package

  • 通过java -jar jar文件

三、SpringBoot常用注解

3.1@Configuration和@Bean

之前使用SSM去开发时,在xml文件中编写bean标签。

但是SpringBoot不推荐使用xml文件

@Configurable 注解相当于beans标签

@Bean注解相当于bean标标签

id="方法名|注解中的name属性"

class=“方法的返回结果”

@Configurable        //代表当前类是一个配置类
public class UserConfig {
​
    @Bean(name="user1")                   //构建一个实例, 放到spring容器中
    public User user() {
        User user = new User();
        user.setId(1);
        user.setName("张三");
        return user;
    }
​
    /*
     <beans .....>                  configuration
        <bean id=“user1" class="com.study.spring-frist.entity.User"/>
      </beans>
     */
}

3.2 @SpringBootApplication

@SpringBootApplication就是一个组合注解

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)

1、@SpringBootConfiguration就是@Configuration注解, 代表启动类就是一个配置类。

2、@EnableAutoConfiguration 实现自动装配,SpringBoot工程启动时,运行一个SpringFactoriesLoader的类。加载META-INF/spring.factories配置类(已经开启的), 通过SpringFactoriesLoader中的load方法,以for循环的方式,一个一个加载。

好处:无需编写大量的整合配置信息,只需要按照SpringBoot提供好了约定去整合即可.

坏处:如果说你导入了一个starter依赖,那么你就需要填写他必要的配置信息。

手动关闭自动装配指定内容: @SpringBootApplication(exclude= QuartzAutoConfiguration.class)

3、@ComponentScan 就相当于 <context:component-scan basePackage="包名" /> 帮助扫描注解的

四、SpringBoot常用配置

4.1SpringBoot的配置文件格式

SpringBoot的配置文件支持properties和xml, 甚至还支持json.

更推荐使用yml文件格式:

  1. yml文件, 会根据换行和缩进帮助管理配置文件所在位置。

  2. yml文件,相比properties更轻量级一些

yml文件的劣势:

1. 严格遵揗换行和缩。

2.在填写value时,一定要在:后面跟上空格

4.2多环境配置

在application.yml文件中添加一个配置项:

spring:
  profiles:
    active: dev

在resource目录下,创建多个application-环境名.yml文件即可

在部署工程时,通过java -jar jar文件 --spring.profiles.active=环境

4.3引入外部配置文件信息

和传统的SSM方式一样,通过@Value的注解去获取properties/yml文件中的内容。

如果在yml 文件中需要编写大量的自定义配置, 并且具有统一的前缀时,采用如下方式

@ConfigurationProperties(prefix = "aliyun")
@Component
@Data
public class AliyunProperties {
    private String xxx;
    private String yyy;
    private String zzz;
    private String aaa;
    private String bbb;
}
aliyun:
  xxx: xxxxxx
  yyy: yyyyyy
  zzz: zzzzzz
  aaa: aaaaaa
  bbb: bbbbbb

4.4 热加载

  1. 导入 依赖

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
            </dependency>
    1. 修改setting中的配置

  2. 修改内容之后,可以通过build重新构建工程

  3.    

uploading.4e448015.gif转存失败重新上传取消

五、SpringBoot整合Mybaits

1、导入依赖

        <!--        mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--        druid连接-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--        mybaits-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

2、编写配置文件

//2.1、准备实体类
@Data
public class Air implements Serializable {
​
    private Integer id;
    
    private Integer districtId;
    
    private java.util.Date monitorTime;
    
    private Integer pm10;
    
    private Integer pm25;
    
    private String monitoringStation;
    
    private java.util.Date lastModifyTime;
​
}
​
//=============================================================
@Data
public class District implements Serializable {
​
    private Integer id;
    
    private String name;
​
}

//2.2 准备Mapper接口
public interface AirMapper {
    List<Air> findAll();
}
​
//在启动类中添加直接,扫描Mapper接口所在的包
@MapperScan(basePackages = "com.study.springbootfrist.mapper")

《!-- 2.3   --》
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.study.springbootfrist.mapper.AirMapper">
    <!-- List<Air> findAll(); -->
    <select id="findAll" resultType="Air">
        select * from air
    </select>
</mapper>
《!-- 添加yml文件配置信息--》
#mybatis配置
mybatis:
  mapper-locations: classpath:mapper/*.xml            #扫描映射文件
  type-aliases-package: com.study.springboot.entity   #配置别名扫描的包
  configuration:
    map-underscore-to-camel-case: false               #开启驼峰映射配置
#2.3指定连接数据库的信息
#连接数据库的信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql:///air?serverTimzone=UTC

3、测试

在Mapper接口的位置, 直接右键 --> goto --> test

会自动创建当前接口的测试类,在test目录下。让当前测试类,继承SpringbootSecondApplicationTests测试类(在class 前,添加public).

public class AirMapperTest extends SpringbootSecondApplicationTests {
​
    @Autowired(required=false)
    private AirMapper airMapper;
    @Test
    public void finalAll(){
        System.out.println("the start......................");
        List<Air> list = airMapper.findAll();
        for (Air air : list){
            System.out.println(air);
        }
    }
}

5.2 注解方式整合Mybatis

1.创建District的Mapper接口

public interface DistricMapper {
​
    @Select("select * from district")
    List<District> findAll();
}

2.添加Mybatis注解

针对增删改查: @Insert, @Delete, @Update, @Select

还是需要在启动类中添加@MapperScan注解

    @Select("select * from district")
    List<District> findAll();
​
    @Select("select * from district where id=#{id}")
    District findOneById(@Param("id") Integer id);
}

3.测试,看到执行的sql语句

logging:
  level:
    com.study.springbootsecond.mapper: DEBUG
public class DistrictMapperSecondTest extends SpringbootSecondApplicationTests {
​
    @Autowired
    private DistrictMapperSecond districtMapperSecond;
    @Test
    public void finalAll(){
        System.out.println("the start......................");
        List<District> list = districtMapperSecond.findAll();
        for (District district : list){
            System.out.println(district);
        }
    }
}

5.3 SpringBoot整合分页助手

  1. 导入依赖

    <!--        pageHelper依赖-->
    <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.10</version>
    </dependency>

2.测试

@Test
public void findByPage(){
    //1.执行分页
    PageHelper.startPage(1, 4);
    //2.执行查询
    List<Air> list = airMapper.findAll();
    //3.封装PageInfo对象
    PageInfo<Air> pageInfo = new PageInfo<>(list);
​
    //4.输出
    for(Air air : pageInfo.getList()) {
        System.out.println(air);
    }
}

六、SpringBoot整合JSP

1.需要导入依赖

<!--        JSP核心引擎依赖-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--        JSTL-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

2.创建webapp以及WEB-INF去存放JSP页面

3.创建controller并指定view的前缀和后缀

@Controller
public class JspController {
​
    @GetMapping("/index")
    public String index(Model model){
        model.addAttribute("name", "张三");
        return "index";
    }
}
spring:
  mvc:
    view:
      prefix: /WEB-INF/
      suffix: .jsp
<resource>
    <directory>src/main/webapp</directory>
    <targetPath>META-INF/resources</targetPath>
    <includes>
        <include>**/*.*</include>
    </includes>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值