SpringBoot入门

springboot

  • 尽可能的减少一切xml配置,做到开箱即用,迅速上手
  • SpringBoot创建java应用,并使用java –jar 启动它,就能得到一个生产级别的web工程。
  • spring平台和第三方依赖库提供了一种固定化的使用方式,使你能非常轻松的开始开发你的应用程序

1.快速入门

环境要求:

<!--springboot必须有这个,基于parent下-->
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
    </parent>
    <dependencies>
    <!--springboot的web启动器,还有许多启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--后面会用到数据库,这里用druid的-->
        <dependency>
            <groupId>com.github.drtrang</groupId>
            <artifactId>druid-spring-boot2-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
    </dependencies>

快速启动一个 hello springboot

Controller

@RestController
@RequestMapping("hello")
public class SpringControllDemo {

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

@RestController -> requsetBody+Controller的注解
@GetMapping -> requestMapping(Method.GET)注解,类似的还有post,put…
@Autowired 按类型装载

启动类

//@EnableAutoConfiguration
//@ComponentScan
@SpringBootApplication
public class SpringBootRun {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootRun.class,args);
    }
}

@SpringBootApplication-> @EnableAutoConfiguration+@ComponentScan
开启自动配置和包扫描,默认扫描当前包和子包的,可以自定义扫描唯一,不过常用默认扫描。

启动结果
在这里插入图片描述

2.配置数据库

spring不同时期的配置方式

  • Spring1.0时代

    在此时因为jdk1.5刚刚出来,注解开发并未盛行,因此一切Spring配置都是xml格式,想象一下所有的bean都用xml配置,细思极恐啊,心疼那个时候的程序员2秒

  • Spring2.0时代

    Spring引入了注解开发,但是因为并不完善,因此并未完全替代xml,此时的程序员往往是把xml与注解进行结合,貌似我们之前都是这种方式。

  • Spring3.0及以后

    3.0以后Spring的注解已经非常完善了,因此Spring推荐大家使用完全的java配置来代替以前的xml,不过似乎在国内并未推广盛行。然后当SpringBoot来临,人们才慢慢认识到java配置的优雅。

有句古话说的好:拥抱变化,拥抱未来。所以我们也应该顺应时代潮流,做时尚的弄潮儿,一起来学习下java配置的玩法。

<!-- 配置连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      init-method="init" destroy-method="close">
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

配置数据库连接池

jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/leyou
jdbc.username=root
jdbc.password=123
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcSource {
    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driverClassName}")
    String driverClassName;
    @Value("${jdbc.username}")
    String userName;
    @Value("${jdbc.password}")
    String password;
    @Bean
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(password);
        return dataSource;
    }
}
  • @Configuration:声明JdbcConfiguration是一个配置类。
  • @PropertySource:指定属性文件的路径是:classpath:jdbc.properties
  • 通过@Value为属性注入值。
  • 通过@Bean将 dataSource()方法声明为一个注册Bean的方法,Spring会自动调用该方法,将方法的返回值加入Spring容器中。相当于以前的bean标签

测试

@RestController
public class HelloController {

    @Autowired
    private DataSource dataSource;

    @GetMapping("show")
    public String test(){
        return "hello Spring Boot!";
    }

}

在这里插入图片描述

SpringBoot的属性注入

@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
    private String url;
    private String driverClassName;
    private String username;
    private String password;
    // ... 略
    // getters 和 setters
}

在类上通过@ConfigurationProperties注解声明当前类为属性读取类
prefix=“jdbc”`读取属性文件中,前缀为jdbc的值
SpringBoot默认会读取文件名为application.properties的资源文件,所以我们把刚才jdbc.properties改为application.properties

1. @Autowired注入
使用JdbcProperties

 @Configuration
 @EnableConfigurationProperties(JdbcProperties.class)
 public class JdbcConfiguration {
 
     @Autowired
     private JdbcProperties jdbcProperties;
 
     @Bean
     public DataSource dataSource() {
         DruidDataSource dataSource = new DruidDataSource();
         dataSource.setUrl(jdbcProperties.getUrl());
         dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
         dataSource.setUsername(jdbcProperties.getUsername());
         dataSource.setPassword(jdbcProperties.getPassword());
         return dataSource;
     }
 
 }

2. 构造函数注入

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {

   private JdbcProperties jdbcProperties;

   public JdbcConfiguration(JdbcProperties jdbcProperties){
       this.jdbcProperties = jdbcProperties;
   }

   @Bean
   public DataSource dataSource() {
       // 略
   }

}

3. @Bean方法的参数注入

  @Configuration
  @EnableConfigurationProperties(JdbcProperties.class)
  public class JdbcConfiguration {
  
      @Bean
      public DataSource dataSource(JdbcProperties jdbcProperties) {
          // ...
      }
  }

更优雅的注入

@Configuration
public class JdbcConfiguration {
    
    @Bean
    // 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}

我们直接把@ConfigurationProperties(prefix = "jdbc")声明在需要使用的@Bean的方法上,然后SpringBoot就会自动调用这个Bean(此处是DataSource)的set方法,然后完成注入。使用的前提是:该类必须有对应属性的set方法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值