• 1.springboot:入门项目


    简介:

    Springboot 来简化spring应用开发,约定大于配置,去繁从简,just run 就可以创建一个独立的,产品应用

    背景:

    J2EE笨重开发,繁多的配置,低下的开发效率,复杂的部署流程,第三方集成难度大

    解决:

    spring全家桶时代
    spring boot   j2EE 一站式解决方案
    Spring Cloud  分布式整体解决方案

    优点:

    快速创建独立运行的spring项目
    使用嵌入式的servlet容器,无需达成war包
    starters自动的依赖管理和版本控制
    大量的自动配置,简化开发,
    无需xml文件的配置,无代码生成
    准生产环境的运行时的应用监控
    与云计算天然集成

    SpringBoot入门:

    1、Spring Boot 简介
    简化Spring应用开发的一个框架;
    整个Spring技术栈的一个大整合;
    J2EE开发的一站式解决方案;
     
    2.微服务
    2014,martin fowler
    微服务:架构风格(服务微化)
    一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
    单体应用:ALL IN ONE
    微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;

    关于maven的配置

    将下面代码配置在maven的配置文件中

    <profile>
        <id>jdk-1.8</id>
        <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
        </activation>
        <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
    </profile>

    所谓的HelloWord程序

    创建一个新的maven工程

    在pom文件中中加入:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    如图所示:写一个controller

    HelloController.java

    @Controller
    public class HelloController {
    
        @ResponseBody
        @RequestMapping("/hello")
        public  String hello(){
            return "helloword";
        }
    }

    HelloWord.java

    //来标注一个springboot主程序,说明是springboot应用
    @SpringBootApplication
    public class HelloWord {
        public static void main(String[] args) {
            //spring应用程序启动
            SpringApplication.run(HelloWord.class,args);
        }
    }

     直接运行main函数的工程

     

     默认访问的网址会得到一个错误的访问页面:

     在默认的网址后面加上/hello请求

     简化部署:

    <!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    利用maven进行打包(package.....
    成jar文件
    然后找到该目录
    执行
    java -jar  XXXX.jar

     此时也可以进行访问

    探究一下POM文件:

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

     父项目是:

    <parent>
        <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-dependencies</artifactId>
         <version>1.5.9.RELEASE</version>
        <relativePath>../../spring-boot-dependencies</relativePath>
    </parent>

     真正管理springboot应用里面的所有依赖

    之后开发导入依赖不需要写版本
    没有在其中管理的需要些版本号

     导入的依赖:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    spring-boot-starter-web:
    spring boot 场景启动器,帮助我们导入web模块正常运行的依赖组件
    根据我们的需要进行导入
    参考网址

     https://docs.spring.io/spring-boot/docs/1.5.19.BUILD-SNAPSHOT/reference/htmlsingle/#using-boot-starter

     

    可以根据我们的需要进行相关的依赖导入!

    spring boot将所有的场景抽取出来,做出一个starters启动器,只需要在项目中引入这些
    starter相关的场景所有依赖都会导入进来。

    主程序:

    //来标注一个springboot主程序,说明是springboot应用
    @SpringBootApplication
    public class HelloWord {
        public static void main(String[] args) {
            //spring应用程序启动
            SpringApplication.run(HelloWord.class,args);
        }
    }
    @SpringBootApplication:  标注在那个类上就说明这个类是Springboot的主配置类
                SpringBoot就应该运行这个类的main方法来启动springboot引用

    @SpringBootApplication:

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan(
        excludeFilters = {@Filter(
        type = FilterType.CUSTOM,
        classes = {TypeExcludeFilter.class}
    ), @Filter(
        type = FilterType.CUSTOM,
        classes = {AutoConfigurationExcludeFilter.class}
    )}
    )
    public @interface SpringBootApplication {

    1.@SpringBootConfiguration:Spring Boot的配置类,标注在某个类上,表示这是springboot的配置类!

      

      @Configuration:配置在类上来标志这个注解

      配置类也是容器中的一个组件:@Componment

    2.@EnableAutoConfiguration: 开启自动配置功能

      之前需要手动配置的东西,SpringBoot自动来配置,不需要进行手动配置

      该注解是开启自动配置的功能

      

      2.1 @AutoConfigurationPackage: 自动配置Spring底层的注解

        @Import 

        @Import(AutoConfigurationaPackage.Registrar.class):将主配置类(@SpringApplication标注的类)

        的包以及子包里面的组件扫描到容器中

      2.2 @Import({EnableAutoConfigurationImportSelector.class}):给容器中导入组件

        EnableAutoConfigurationImportSelector:将所需要导入的组件以全类名方式、这些逐渐就会添加到容

        器中,会给容器增加非常多的自动配置

        (xxxAutoConfiguration):就是给容器中导入相应的组件,并且配置好这些组件

    springboot在启动的时候从类路径下MEAT-INF/spring.factories中获取EnableAutoConfiguration制定的值,将这
    些值作为自动配置导入导入到容器中自动配置的类就生效,帮助我们进行自动配置工作
    注:以前都是手动配置

  • 相关阅读:
    页面滚屏截图工具推荐
    java总结第二次(剩余内容)//类和对象1
    happy birthday to tbdd tomorrow
    数组增删改查及冒泡
    三个循环方面程序
    三个入门小程序
    java总结第二次//数组及面向对象
    Java总结第一次//有些图片未显示,文章包含基础java语言及各种语句
    后台验证url是不是有效的链接
    img 鼠标滑上后图片放大,滑下后图片复原
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10114868.html
Copyright © 2020-2023  润新知