zoukankan      html  css  js  c++  java
  • springboot

     通常搭建一个基于spring的web应用,我们需要做以下工作:

    1、pom文件中引入相关jar包,包括spring、springmvc、redis、mybaits、log4j、mysql-connector-java 等等相关jar ...

    2、配置web.xml,Listener配置、Filter配置、Servlet配置、log4j配置、error配置 ...

    3、配置数据库连接、配置spring事务

    4、配置视图解析器

    5、开启注解、自动扫描功能

    6、配置完成后部署tomcat、启动调试

    ......

    搭个初始项目不一会就一个小时甚至半天过去了。而用springboot后,一切都变得很简便快速。

    引入jar

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <!--mybatis 开发包-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>
    <!--springboot web模块支持-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!--druid 的数据源-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.31</version>
    </dependency>

    spring-boot-starter-web包自动帮我们引入了web模块开发需要的相关jar包,

    mybatis-spring-boot-starter帮我们引入了dao开发相关的jar包。

    spring-boot-starter-xxx是官方提供的starter,xxx-spring-boot-starter是第三方提供的starter。

     stater机制帮我们完成了项目起步所需要的的相关jar包。那问题又来了,传统的spring应用中不是要在application.xml中配置很多bean的吗,比如dataSource的配置,transactionManager的配置 ... springboot是如何帮我们完成这些bean的配置的?下面我们来分析这个过程。

    以mybatis为例,在上面的截图中,我们发下mybatis-spring-boot-starter这个包帮我们引入了mybatis-spring-boot-autoconfigure这个包,里面有MybatisAutoConfiguration这个类,打开这个类看看有什么东西。

    熟悉@Configuration&、@Bean这两个bean的同学或许已经知道了。这两个注解一起使用就可以创建一个基于java代码的配置类,可以用来替代相应的xml配置文件。

    @Configuration注解的类可以看作是能生产让Spring IoC容器管理的Bean实例的工厂。

    @Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象应该被注册到spring容器中。

     传统的基于xml的bean配置方法如下:

    <beans>  
        <bean id = "car" class="com.itpsc.Car">  
            <property name="wheel" ref = "wheel"></property>  
        </bean>  
        <bean id = "wheel" class="com.itpsc.Wheel"></bean>  
    </beans>

    相当于用基于java代码的配置方式:

    @Configuration  
    public class Conf {  
        @Bean  
        public Car car() {  
            Car car = new Car();  
            car.setWheel(wheel());  
            return car;  
        }  
        @Bean   
        public Wheel wheel() {  
            return new Wheel();  
        }  
    }

    所以上面的MybatisAutoConfiguration这个类,自动帮我们生成了SqlSessionFactory这些Mybatis的重要实例并交给spring容器管理,从而完成bean的自动注册。

     。。。。。。。。。。

    我们可以将自动配置的关键几步以及相应的注解总结如下:

    1、@Configuration&与@Bean->基于java代码的bean配置

    2、@Conditional->设置自动配置条件依赖

    3、@EnableConfigurationProperties与@ConfigurationProperties->读取配置文件转换为bean。

    4、@EnableAutoConfiguration、@AutoConfigurationPackage 与@Import->实现bean发现与加载。

     


     

    Spring Boot简化了基于Spring的应用开发,通过少量的代码就能创建一个独立的、产品级别的Spring应用。

     springboot常用的starter有哪些 
    spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持 
    spring-boot-starter-data-jpa 数据库支持 
    spring-boot-starter-data-redis redis数据库支持 
    spring-boot-starter-data-solr solr支持 
    mybatis-spring-boot-starter 第三方的mybatis集成starter。

    总结Spring Boot Starter的工作原理:

    1. Spring Boot 在启动时扫描项目所依赖的JAR包,寻找包含spring.factories文件的JAR

    2. 根据spring.factories配置加载AutoConfigure类 

    3. 根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context

       多环境配置

          

        

    注解

    @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中

    @ComponentScan:让spring Boot扫描到Configuration类并把它加入到程序上下文。

    @Configuration :等同于spring的XML配置文件;使用Java代码可以检查类型安全。

    @EnableAutoConfiguration :自动配置。

    在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration 会自动去maven中读取每个starter中的spring.factories文件 该文件里配置了所有需要被创建spring容器中的bean。

    @ComponentScan :组件扫描,可自动发现和装配一些Bean。

    @Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。

    @RestController:注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。

    @Autowired:自动导入。

    @PathVariable:获取参数。

    @JsonBackReference:解决嵌套外链问题。

    @RepositoryRestResourcepublic:配合spring-boot-starter-data-rest使用。

    https://www.cnblogs.com/xiaoxi/p/7999885.html

    https://www.cnblogs.com/hjwublog/p/10332042.html

  • 相关阅读:
    袁创:如何成为黄金程序猿
    划重点!新版电子病历评级标准讲解会上6大核心要点
    台湾医院信息化见闻录
    2500行代码实现高性能数值表达式引擎
    HIT创业感言:只有长寿的企业才有持续价值
    袁创:寂静的战争
    相约南湖,南京都昌信息亮相南湖HIT论坛
    我们是谁?南京都昌信息科技有限公司!
    医疗链的系列谈 第一篇 基本概念研究
    论电子病历控件的现状和发展方向
  • 原文地址:https://www.cnblogs.com/dingpeng9055/p/11046988.html
Copyright © 2011-2022 走看看