<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>
<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>
package com.zhaoyi.hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class HelloWorldApplication { public static void main(String[] args){ SpringApplication.run(HelloWorldApplication.class, args); } }
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent>]
父项目才真正的管理Spring Boot应用里面的全部依赖版本。css
Spring boot的版本仲裁中心: 之后咱们导入依赖默认是不须要写版本(没有在dependency里面管理的依赖天然须要声明版本号)java
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
spring-boot-starter: spring-boot场景启动器;如spring-boot-starter-web则帮咱们导入了web模块须要正常运行所依赖的组件。 参照官方文档咱们能够发现,spring-boot-starter-*表明了一系列的功能场景,当你须要什么具体业务需求的时候,将其导入就能够了,好比aop、data-redis、mail、web等。他将全部的功能场景都抽出来,作成一个个的starter(启动器),其先关的业务场景的全部依赖都会导入进来,要用什么功能就导入什么场景的启动器。web
package com.zhaoyi.hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class HelloWorldApplication { public static void main(String[] args){ SpringApplication.run(HelloWorldApplication.class, args); } }
@SpringBootApplication SB应用标注在某个类上说明这个类是SB的主配置类,SB就应该运行这个类的main方法来启动SB应用。redis
@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 SB的配置类; 标注在某个类上,表示这个类是SB的配置类。spring
@Configuration 配置类上来标注这个注解; 配置类就是配置文件;配置类也是容器中的一个组件;@companent浏览器
@EnableAutoConfiguration 开启自动配置功能; 之前咱们须要在SP中配置的东西,SB帮咱们自动配置,经过此配置告诉SB开启自动配置功能。这样,自动配置的功能才能生效。app
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import({EnableAutoConfigurationImportSelector.class}) public @interface EnableAutoConfiguration { String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration"; Class<?>[] exclude() default {}; String[] excludeName() default {}; }
@AutoConfigurationPackage 自动配置包 SP的底层注解@import,给容器中导入一个组件。 将主配置类(@SpringBottApplication标注的类)所在包及下面全部子包里面的全部组件扫描到SP容器。maven
@Import({EnableAutoConfigurationImportSelector.class}) 导入哪些组件的选择器;将全部须要导入的组件以全类名的方式返回,这些组件就会被添加到容器中; 会给容器中导入很是多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景须要的全部组件,并配置好这些组件。这样就免去了咱们手动编写配置注入功能组件等的工做;spring-boot
SB在启动的时候从类路径下的META-INFO/spring.factories中获取EnableAutoConfiguration指定的值,将这些纸做为自动配置类导入容器中,自动配置类就生效,帮咱们进行自动配置工做;之前咱们须要本身配置的东西,自动配置类都帮咱们作了。code
J2EE的总体解决方案和自动配置都在sprig-boot-autoconfigure.jar中了;
IDE都支持使用Spring的项目建立向导; 选择咱们须要的模块,向导会联网建立SB项目;
@ResponseBody 这个类的全部方法(或者单个方法——)返回的数据直接写给浏览器。 @ResponseBody写在类上面时,大能够写为@RestController,其等价于@ResponseBody+@Controller;