Spring-boot简单的理解

SpringBoot启动

SpringApplication.run(MyBootApplication.class);

SpringApplication.run启动SpringBoot应用,主要过程

  • 要创建Spring容器对象
  • 根据MyBootApplication注解标记功能创建Bean组件对象纳入Spring容器中(@SpringBootApplication)
  • 如果是web程序,会自动启动Tomcat服务器,并将程序发布到服务器上
  • 用户可以对SpringBoot程序访问

@SpringBootApplication作用

@SpringBootApplication注解是一个多功能标记,主要包含以下子标记功能:

  • @SpringBootConfiguration(@Configuration)

    等价于Spring Boot Bean定义标记。<bean id="xxx"></bean>

来一个简单接口和实现类:

//接口
public interface IDeptDao {

    void save();

}

//实现类
public class DeptDao implements IDeptDao {

    public void save(){
        System.out.println("正在配置.......");
    }
}
//@Configuration             //两者意义相同,@SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,
@SpringBootConfiguration     //并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。
public class MyConfigurationBean {

    //@Primary //主对象,默认注入时采用的对象
    @Bean//将当前的方法纳入到spring容器中,id默认为方法名
    public IDeptDao deptdao() {
        IDeptDao dept = new DeptDao();
        return dept;
    }

    @Bean(name="deptDao1")//将当前对象纳入到spring容器中,并指定名字
    public IDeptDao deptDao() {
        IDeptDao dept = new DeptDao();
        return dept;
    }

}

测试:

public class TestConfigurationBean {
//    实例化Spring Boot容器
    public static void main(String[] args) {
        ApplicationContext app = SpringApplication.run(MyBootApplication.class, args);
        DeptService bean = app.getBean("deptService", DeptService.class);
        bean.addDept();
    }
}

//结果:

正在将数据加入到数据库中....
    正在配置.......

 
  • @EnableAutoConfiguration

    Spring Boot 自动配置标记。SpringBoot内置大量的自动配置组件,可以在启动时加载创建对象纳入Spring容器,例如dispatcherServlet、dataSource、jdbcTemplate等等。

    加载原理:开启@EnableAutoConfiguration标记后,调用EnableAutoConfigurationImportSelector组件加载spring-boot-autoconfigure.jar包中META-INF/spring.factories文件,文件中定义了大量自动配置组件,载入Spring容器。

    org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,
    org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,
    org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,
    
  • @ComponentScan

    SpringBoot 扫描标记.等价于<context:component-scan base-package="xx"/>

    @ComponentScan(basePackages={"cn.xdl.service"})//等价于<context:component-scan base-package="xx"/>,指定文件夹
    //@ComponentScan//扫描当前包及子包组件,一般需要将类放到根包中cn.xdl
    public class MyComponentScanBean {
    
    }

    DeptService组件定义

@Service
public class DeptService {

    public void addDept(){
        System.out.println("添加一个部门信息");
    }

}

实例化Spring Boot容器:

public static void main(String[] args) {
    ApplicationContext ac =
        SpringApplication.run(MyBootApplication.class);
    DeptService deptService =
        ac.getBean("deptService",DeptService.class);
    System.out.println(deptService);
    deptService.addDept();
}

Properties配置参数注入

可以将application.properties文件中的参数注入给Spring容器中的Bean对象。

@Component//扫描
@ConfigurationProperties(prefix="spring.datasource")//配置参数注入
public class MyBean {

    private String myname;//与application.properties中key相同
    private String mypassword;

    @Value("${db.url1}")
    private String url1;

    //省略set和get方法

}

@ConfigurationProperties指定将application.properties中同名参数给Bean对象属性注入,如果有key有共通前缀,可以使用prefix属性指定。如果遇到特殊key可以使用@Value标记注入。@ConfigurationProperties需要开启自动配置功能@EnableConfigurationProperties或@EnableAutoConfiguration。

SpringBoot内置dataSource机制

SpringBoot通过自动配置组件DataSourceAutoConfiguration,自动创建出DataSource对象,id名字为dataSource。创建过程如下:

  • 首先创建tomcat-jdbc连接池对象(spring-boot-starter-jdbc包含有)
  • 如果tomcat-jdbc创建失败,会查找创建Hikari连接池对象
  • 如果Hikari创建失败,会查找创建commons-dbcp连接池对象
  • 如果commons-dbcp创建失败,会查找创建commons-dbcp2连接池对象

提示:spring-boot-starter-jdbc在1.x版本中配套引入tomcat-jdbc连接池,但是在2.x版本中配套引入HikariCP连接池。

使用步骤如下:

  1. 创建maven project在pom.xml定义jdbc

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.7.RELEASE</version>
    </parent>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    
    <dependencies>
    
        <!-- 含有dao、aop事务、连接池包(1.x tomcat/2.x HikariCP) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
    
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.3</version>
        </dependency>
    
    </dependencies>
  2. 在application.yml或properties追加连接参数定义
    spring:
     datasource:
      username: SCOTT
      password: TIGER
      url: jdbc:oracle:thin:@localhost:1521:XE
      driverClassName: oracle.jdbc.OracleDriver
  3. 在启动类前开启自动配置功能
    @SpringBootApplication
    public class MyBootApplication {
    
    }
  4. 测试类
    public static void main(String[] args) {
        ApplicationContext ac =
            SpringApplication.run(MyBootApplication.class, args);
        DataSource ds = ac.getBean("dataSource",DataSource.class);
        System.out.println(ds);
    }

创建指定连接池方法(方法一,推荐)

在application.yml或properties追加下面参数

spring.datasource.type=org.apache.commons.dbcp.BasicDataSource

创建指定连接池方法(方法二)

使用@[email protected]自定义dataSource对象

@SpringBootApplication
public class MyBootApplication {

    @ConfigurationProperties(prefix="spring.datasource")
    @Bean
    public DataSource dataSource(){
        BasicDataSource ds = new BasicDataSource();
        return ds;
    }

}

原文地址:https://www.cnblogs.com/hx1098/p/9393126.html

时间: 2024-10-08 10:55:30

Spring-boot简单的理解的相关文章

spring boot简单的小demo(适合于初学者)

import com.example.demo2.com.example.dao.ShopDao; import com.example.demo2.com.example.entity.Shops; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframew

Spring Boot 简单的打包部署

Spring Boot 支持使用 Jar 内嵌 Web 服务器(Tomcat)的方式发布,也支持生成 war 包放在外置的 web 服务器运行. 1.使用 Jar 发布应用 配置步骤: ① pom.xml 要显示加入插件 org.springframework.boot,否则无法产生 jar 清单文件,导致打出来的 jar 无法使用命令运行. 1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.springfram

Spring Boot 简单的请求示例(包括请求体验证)

1.先做个最简单的Get请求 新建一个Controller , 并给他添加注解@RestController 它是@Controller和@ResponseBody的组合注解,告诉Spring我是一个Controller,请求过来的时候,记得扫描我 ok,在给他添加@RequestMapping注解,为这个Controler指明路径 @RestController @RequestMapping("/Demo") public class DemoController { @Respo

Spring Boot简单xml配置集成mybatis

一.xml配置版 1.properties文件中增加的配置: mybatis.config-locations=classpath:mybatis/mybatis-config.xml mybatis.mapper-locations=classpath:mybatis/mapper/*.xml 2.mybatis-config.xml文件的配置 mapper文件里面的jdbcType重命名 <configuration> <typeAliases> <typeAlias a

为什么说 Java 程序员必须掌握 Spring Boot ?

Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,那么, Spring Boot 诞生的背景是什么?Spring 企业又是基于什么样的考虑创建 Spring Boot? 传统企业使用 Spring Boot 会给我们带来什么样变革? 带着这些问题,我们一起来了解下 Spring Boot 到底是什么? Spring 历史 说起 Spring Boot 我们不得不先了解一下 Spring 这个企业,不仅因为 Spring Boot 来源于 Spring 大家族,而

第二章-spring boot springDataJPA快速开发DAO层,junit测试

一.简介 第一章介绍了spring boot简单入门,这一章介绍一下如何通过springDataJPA快速实现DAO层开发. 二.环境 1. jdk1.8 2. springboot 1.5.9.RELEASE 3. apache maven(3.5.0) 4. 开发工具(IntelliJ IDEA ) 三.步骤 1)通过idea file->new project->Spring Initializr 创建项目,选中web->web,sql->JPA.MySQL.       

Spring Boot 1.4测试的简单理解

首先maven要引入spring-boot-starter-test这个包. 先看一段代码 @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT) public class MyTest {         @Autowired     private TestRestTemplate restTemplate;     @Test    public void test()

理解Spring Boot

理解Spring Boot 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs Spring Boot是一个偏执的开源框架,它可用于创建可执行的Spring应用程序,采用了习惯优于配置的方法. 此框架的神奇之处在于@EnableAutoConfiguration注释,此注释自动载入应用程序所需的所有Bean--这依赖于Spring Boot在类路径中的查找. 一.@Enable*注释 @Enable*注释并不是新发明的注

阿里微服务专家手写Spring Boot 实现一个简单的自动配置模块

为了更好的理解 Spring Boot 的 自动配置和工作原理,我们自己来实现一个简单的自动配置模块. 假设,现在项目需要一个功能,需要自动记录项目发布者的相关信息,我们如何通过 Spring Boot 的自动配置,更好的实现功能呢? 实战的开端 – Maven搭建 先创建一个Maven项目,我来手动配置下 POM 文件. 参数的配置 - 属性参数类 首先,我们定义一个自定义前缀,叫做 custom 吧.之前说到,这里的配置参数,可以通过 application.properties 中直接设置

Spring Boot 快速入门 史上最简单

1.Spring Boot 概述 Spring Boot 是所有基于 Spring 开发的项目的起点.Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件. 2.什么是 Spring Boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新