xml version="1.0"encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.itcodeschool.springbootgroupId>
<artifactId>HelloWorldartifactId>
<version>0.0.1-SNAPSHOTversion>
<packaging>jarpackaging>
<name>HelloWorldname>
<description>Demo projectfor Spring Bootdescription>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.0.0.RELEASEversion>
<relativePath/>
parent>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
配置说明:
l spring-boot-starter-parent
Spring Boot的父级依赖,它封装了很多开发Spring Boot项目所需maven配置的默认依赖,可以省去常用常用包依赖的version标签。
如果想要看详细的可以在找到你的maven仓库下依次找到
……\Repository\org\springframework\boot\spring-boot-dependencies\2.0.0.RELEASE\spring-boot-dependencies-2.0.0.RELEASE.pom文件。可以用Editplus打开如下:
截取部分,重点看
…………
通过以上部分配置文件可以看到,就是为我们定义好了很多常用依赖包的版本依赖。
l spring-boot-starter-web
web相关的依赖
l spring-boot-starter-test
单元测试相关,已经对单元测试进行了很好的封装和支持,是的我们在做单据测试时会更加简便。
l spring-boot-maven-plugin
编译插件,在添加了该插件之后,当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“Java -jar”命令就可以直接运行。这在很大程度上简化了应用的部署,只需要安装了 JRE 就可以运行。
还有更多spring-boot-starter相关pom文件配置参考英文原文:
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-starter
HelloWorld:项目名称;
src/main/java:目录下放置所有java文件(源代码文件);
src/main/resources:放置所有的配置文件、页面文件、静态资源文件;
src/main/resources/application.properties:Spring Boot提供的全局配置文件,可以自定义配置改变Spring Boot默认配置;
src/main/resources/static:是静态资源文件目录,在这个目录中的所有文件将可以被直接访问,如果没有这个文件夹可自行创建;
src/main/resources/ templates:模板文件存放目录
每一个Spring Boot 程序都有一个默认是项目名Application这样一个类,这个类有一个main方法,main方法作为程序的入口执行SpringApplication.run(HelloWorldApplication.class, args)启动了Spring Boot程序。
@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@interfaceSpringBootApplication {
@AliasFor(annotation = EnableAutoConfiguration.class)
Class>[]exclude() default {};
@AliasFor(annotation = EnableAutoConfiguration.class)
String[]excludeName() default {};
@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
String[]scanBasePackages() default {};
@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
Class>[]scanBasePackageClasses() default {};
}
通过源码发现@SpringBootApplication注解是一个组合注解,组合了@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan注解,如果在程序入口类上不适用@SpringBootApplication注解也可以加上以上三个注解即可达到同等效果。
@EnableAutoConfiguration 注解:
作用在于让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web依赖添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置,自动配置SpringMVC和Tomcat。
SpringBoot会自动扫描@SpringBootApplication注解所在类的同级包以及下级包里面的bean,@SpringBootApplication注解放置的位置要能够保证controller、service、dao等能够纳入spring容器管理。
@ImportResouce 注解:
SpringBoot理念就是零配置编程,但是在某种特殊业务逻辑下必须使用XML的配置,@ImportResouce注解加载XML配置文件,建议新建一个配置类,在类上加上@Configuration注解保证能够Spring boot扫描装配,再通过@ImportResource导入额外编写的xml配置文件,也可以通过启动类上直接加入@ImportResouce注入导入xml文件。
格式:
@ImportResource(value = { "路径" })或者使用@ImportResource(locations= { "路径" }),一样的效果,多个XML文件你可以用逗号“,”分隔,就这样轻而易举的引用XML配置。
@Configuration
@ImportResource(locations={"classpath:application-bean.xml"})
public class Config {
}