springboot学习笔记01—IDEA版

正式开始项目前先简单学习一下springboot:

1.pom文件中导入springboot依赖(所有springboot应用都要以该工程为父工程)。
ps:该springboot版本号为2.0.6

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
  </parent>

2.pom文件中导入启动器依赖,官方提供了很多启动器,名称为spring-boot-starter-xxx,以下的spring-boot-starter-web为web应用启动器,自动导入了web应用所需的依赖jar包,每一个启动器背后都是一堆的依赖。

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

3.创建一个controller
在这里插入图片描述

4.在HelloController中添加代码
注解说明:
1).@RestController = @Controller+@RequestBody
写了这个就不用在test()方法上面加RequestBody,但是 这样表示只能传json数据。
2).@RequestMapping(“hello”)
表示浏览器访问全局的路径
3).@GetMapping
表示方法的路径
4).@EnableAutoConfiguration
声明自动配置,springboot会根据你引入的依赖,去猜测你需要的配置并帮助你自动配置,不需要手动去配置。
5).springboot该如何运行呢?只需要像java一样写一个固定的main方法,在run()中添加需要启动的类即可。

@RestController
@RequestMapping("hello")
@EnableAutoConfiguration
public class HelloController {

    @GetMapping("show")
    public String test(){
        return  "hello springboot 1";
    }

    public static void main(String[] args){
        SpringApplication.run(HelloController.class,args);
    }
}

5.然后就可以启动啦!springboot里面内置了tomcat,默认端口8080,浏览器输入路径http://localhost:8080/hello/show
页面成功显示
在这里插入图片描述
6.成功之后我们不免会想:如果我再写一个HelloController2的类

//HelloController.class
@RestController
@RequestMapping("hello2")
@EnableAutoConfiguration
public class HelloController2 {

    @GetMapping("show")
    public String test(){
        return  "hello springboot 2";
    }

    public static void main(String[] args){
        SpringApplication.run(HelloController2.class,args);
    }
}

那是否还要写一个main方法来启动?同一个8080端口可以启动吗?而且难道还要再写一次@EnableAutoConfiguration注解吗?其实springboot官方已经帮我们想好啦,它提供了一个全局的引导类。我们在所有需要启动的类的父路径下写一个TestApplication类。


7.TestApplication类中我们添加上面的main方法,run()中的内容是它自己本身的类名TestApplication.class,然后还有刚才提到的自动配置的@EnableAutoConfiguration注解

@EnableAutoConfiguration   //启用springboot的自动配置
@ComponentScan  //类似于<context:component-scan base-package="">,不指定值时,默认扫描当前类所在的包以及子孙包
public class TestApplication {

    public static void main(String[] args){
        SpringApplication.run(TestApplication.class,args);
    }
}

8.现在我们可以将刚才在HelloController中写好的main方法和@EnableAutoConfiguration注解删了,因为我们不需要了,我们有全局引导类了,然后启动TestApplication,在浏览器分别输入两个地址,成功跳转
在这里插入图片描述
在这里插入图片描述

9.做到这里我们不禁会想:这样注解也太多了吧,有没有能够一个注解代替多个注解的呢?答案是有,在全局引导类上使用组合注解@SpringBootApplication ,相当于@EnableAutoConfiguration @ComponentScan @SpringBootConfiguration,一个顶多个!

10.接下来我们来写一下jdbc连接池,首先在pom文件导入druid依赖

<!-- 引入连接池依赖(druid) -->
        <dependency>
            <groupId>com.github.drtrang</groupId>
            <artifactId>druid-spring-boot2-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

11.在resource目录下创建file:jdbc.properties
在这里插入图片描述

12.在springboot目录下创建config文件夹,在config文件夹下面创建JdbcConfiguration类

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@Configuration  //声明一个类是一个java配置类,相当于一个xml配置文件
@PropertySource("classpath:jdbc.properties")  //读取资源文件
public class JdbcConfiguration {

    @Value("${jdbc.driverClassName}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;


    @Bean  //把方法的返回值注入到容器
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(this.driverClassName);
        dataSource.setUrl(this.url);
        dataSource.setUsername(this.username);
        dataSource.setPassword(this.password);

        return dataSource;

    }

}

13.最后在HelloController里注入dataSource

 @Autowired
 private DataSource dataSource;

然后在return处打一个断点,启动调试,浏览器输入地址:localhost:3306/hello/show后,返回到控制台,查看dataSource里面的值,可以看到值,注入成功。
在这里插入图片描述
14.我们还可以把它封装起来,首先在resource中创建一个文件application.properties,将jdbc.properties的内容拷贝过去,以后springboot的所有配置全在里面配置,springboot只能识别该文件
在这里插入图片描述
15.config文件夹下创建JdbcProperties类

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "jdbc")  //识别application.properties中前缀为jdbc的配置
public class JdbcProperties {



    private String driverClassName;
    private String url;
    private String username;
    private String password;

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

16.修改JdbcConfiguration类的内容

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration  //声明一个类是一个java配置类,相当于一个xml配置文件
//@PropertySource("classpath:jdbc.properties")  //读取资源文件
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {

    @Autowired
    private JdbcProperties jdbcProperties;

    @Bean  //把方法的返回值注入到容器
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());
        dataSource.setUrl(this.jdbcProperties.getUrl());
        dataSource.setUsername(this.jdbcProperties.getUsername());
        dataSource.setPassword(this.jdbcProperties.getPassword());

        return dataSource;

    }

}

17.继续像刚才打上断点,执行后,注入成功,可以在控制台看到值
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值