• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
欢迎你来到 鸢羽 的博客!!
有交流才有进步, 记录我的学习笔记, 用我的经历, 让你少进一个坑, 让我们一起成长吧!
博客园    首页    新随笔    联系   管理    订阅  订阅
springboot入门

一、Spring Boot入门

1、Spring Boot 简介

  • 简化Spring应用开发的一个框架;
  • 整个Spring技术栈的一个大整合;
  • J2EE开发的一站式解决方案;

2、微服务

2014.martin fowler
微服务:架构风格
一个应用该是一个小型服务:可以通过HTTP的方式进行互通;

单体应用:All IN ONE

每一个功能元素最终都是一个可独立替换,和独立升级的软件单元

详细参照微服务文档

环境约束:
-jdk1.8:Spring Boot1.7及以上:Java version "1.8.0_112"
-maven3.x:maven 3.3以上版本:Apache Maven 3.3.9
-IntelliJIDEA2017:IntelliJ IDEA2017.2.2.x64,STS
-SpringBoot 1.5.9.RELEASE

统一环境:

MAVEN设置
给Maven的setting.xml配置文件的profiles标签添加设置

<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>

4、Spring Boot HelloWorld

一个功能:
浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串;

1、创建一个maven工程;(jar)

2、导入Spring Boot相关的maven依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.xx</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version><name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>11</java.version>
    </properties>

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

3、编写一个主程序,启动Spring Boot应用

/***
 * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args){
        //Spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

4、编写相关的Colltroller、Service

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

5、运行主程序测试

6、简化部署

 <!--这个插件,可以将应用程序打包成一个可执行的jar包:-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

将这个应用打成jar包,直接使用java -jar的命令进行执行
注意,这个要在jar包的目录下执行cd jar包路径
dir
例如:java -jar spring-boot-hellworld-0.0.1-SNAPSHOT.jar

5、Hello World探究

1、POM文件

> 父项目
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>
他的父项目
<parent>
       <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath> ../../spring-boot-dependencies</relativePath>
</parent>
他来真正管理Spring Boot应用里面的所有依赖版本;

Spring Boot的版本仲裁中心
以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)

2、导入的依赖
        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
spring-boot-starter-web:
  Spring-boot-starter:Spring-boot场景启动器;帮助我们导入了web模块正常运行所依赖的组件;  

Spring Boot将所有的功能场景都抽取出来,做成一个哥哥的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器

2、主程序类,主入口类

 /***
 * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args){
        //Spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

@SpringBootApplication: Spring Boot应用标注在某各类上说明这个类是Spring Boot的主配置类,Spring Boot就应该运行这个类的main方法来启动Spring Boot应用;

@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) })

@SpringBootConfiguration:Spring Boot的配置类:
标注在某个类上就表示这个类是一个Spring Boot的配置类;
@Configuration:配置类上来标注这个注解;
配置类.....配置文件;配置类也是容器中的一个组件;@Component
@EnableAutoConfiguration:开启自动配置功能;
以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉Spring Boot开启自动配置功能;这样自动配置才能生效;

@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {

​ @AutoConfigurationPackage:自动配置包

​ @Import(AutoConfigurationPackages.Registrar.class):

​ Spring的底层注解
​ @Import,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class

将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;

​ @Import(AutoConfigurationImportSelector.class)

​ 给容器中导入组件?

​ AutoConfigurationImportSelector:导入那些组件的选择器;

​ 将所有需要导入的组件以全雷鸣的方式返回;这些组件就会被添加到容器中;

​ 会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;

自动配置类

有了自动配置类,免去了我们手动编写配置注入功能组件等的工作;

​ SpringFactoriesLoarder.loadFactoryNames(EnableAutoConfiguration.class.classLoader);

Spring Boot在启动的时候从类路劲下的META-INF/spring.factories中获取AutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们配好了:

​ J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-2.1.6.RELLEASE.jar;

6、使用Spring Initializer快速创建Spring Boot项目

IDE都支持使用Spring的项目创建想到快速创建一个Spring Boot项目;

  • 主程序已经生成好了,我们值需要我们自己的逻辑
  • resources文件夹中的目录结构
    • static:保存所有的静态资源:js css images;
    • templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持jsp页面;可以使用模板引擎(freemarker,thymeleaf);
    • application,properties:Spring Boot应用的配置文件;
posted on 2019-07-22 13:00  鸢羽_颖  阅读(194)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3