欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

框架-SpringBoot环境搭建

程序员文章站 2024-03-04 11:26:17
...

SpringBoot环境搭建

环境

eclipse-jee-mars

JDK8

maven3.6

springboot1.5.10

git+github

1、创建maven项目

框架-SpringBoot环境搭建

2、添加springboot约束

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

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

3、创建springboot启动类

框架-SpringBoot环境搭建

package springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//@SpringBootApplication:标识这是springboot的启动类
@SpringBootApplication
public class SpringbootApplication {
	public static void main(String[] args) {
	       SpringApplication.run(SpringbootApplication.class, args);
	}
}

4、编写测试controller

框架-SpringBoot环境搭建

控制类要写在启动类所在包或所在包的下级

package springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
	
	@RequestMapping("/hi")
	public @ResponseBody String hi() {
		return "hi, I'm springboot !";
	}
}

5、直接运行启动类测试

框架-SpringBoot环境搭建

在浏览器中输入:http://localhost:8080/hi

框架-SpringBoot环境搭建

6、简化部署

  • 添加插件(pom.xml)

    	<build>
    		<plugins>
    			<!-- 这个插件可以将springboot应用打包成一个jar包 -->
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    		</plugins>
    	</build>
    
  • 如果项目的打包方式为war,则改为jar(pom.xml)

    	<packaging>jar</packaging>
    
  • 项目右键->run as ->maven build…

框架-SpringBoot环境搭建

  • 找到打包生成jar
    框架-SpringBoot环境搭建

  • cmd运行:java -jar jar包名称

    C:\Users\Administrator>cd C:\Users\Administrator\Desktop
    C:\Users\Administrator\Desktop>java -jar 01s.jar
    

    http://localhost:8080/hi
    框架-SpringBoot环境搭建

7、将该项目推送到github

  • 右键项目->team->shareProject:初始化本地仓库

框架-SpringBoot环境搭建

框架-SpringBoot环境搭建

  • 将本地仓库的文件推送到远程仓库:team->remote->push

    先将未追踪的文件add index,然后再push

框架-SpringBoot环境搭建

分析

1、pom.xml文件

父项目

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

它的父项目是:他来真正管理springboot应用里面的所有依赖版本。

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

springboot的版本仲裁中心;

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

导入的依赖

        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

spring-boot-starter-web:

​ spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件。

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

主程序类、主入口类

package springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//@SpringBootApplication:标识这是springboot的启动类.
@SpringBootApplication
public class SpringbootApplication {
	public static void main(String[] args) {
	       SpringApplication.run(SpringbootApplication.class, args);
	}
}

@SpringBootApplication: springboot应用标注在某个类上,说明这个类是springboot的主配置类,springboot就应该运行这个类的main方法来启动springboot应用。它的实现如下:

@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 {
  • @SpringBootConfiguration:springboot的配置类,标志在某个类上表示该类是springboot的配置类。它的实现如下:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {

}

​ @Configuration:spring的注解,标识这个类为配置类相当于(bean.xml)

  • @EnableAutoConfiguration:自动配置包(自动扫描主入口类所在包下的所有类)

    @SuppressWarnings("deprecation")
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @AutoConfigurationPackage
    @Import(EnableAutoConfigurationImportSelector.class)
    public @interface EnableAutoConfiguration {
    
    • @AutoConfigurationPackage:

      底层为:@Import(AutoConfigurationPackages.Registrar.class)

    ​ spring的底层注解,给容器中导入一个类。

    将主配置类(@SpringBootApplication注解的类)所在包以及下面所有的子包中的所有类导入到spring容器中。所以上诉controller需要写在主入口类所在包或所在包的下及包中,这样spring才能扫描到。

    • @Import(EnableAutoConfigurationImportSelector.class):导入哪些组件的选择器。

      ​ 将所有需要导入的组件以全类名的方式返回,这些组件将会被添加到容器中。(例如aop的配置,则有相关的自动配置类:org.springframework.boot.autoconfigure.aop.AopAutoConfiguration)

      ​ 会给容器导入非常多的自动配置类(×××AutoConfiguration):对事务、aop、mvc的配置……

框架-SpringBoot环境搭建

​	从类路径:META-INF/spring.factories下获取需要导入的配置类。Libraries -> Maven Dependencies -> spring-boot-autoconfigure-1.5.10.RELEASE.jar -> META-INF ->spring.factories

​	J2EE的整体解决方案和自动配置都在spring-boot-autoconfigure-1.5.10.RELEASE.jar包中。

eclipse快速生成springboot项目

安装插件sts 直接 new->spring starter project即可。