自学尚硅谷Spring Boot (一)

1.下载maven工具

8474a66db68b40b831e727da04d1585653d.jpg

2.配置maven环境变量(与配置jdk一样,配置MAVEN_HOME和path)

3.修改maven的配置文件

f381c120cb366442329feb04d2269ba417e.jpg

1c7b13f3214681b07fe8543500a98610531.jpg

9b1033d59abf642cd98517b7ae6a0233a52.jpg

4.创建一个maven工程

8f1afacc533770310bbce3f317575886437.jpg

cc7a97bbaa0b0ea354a64b1d6a60e94f566.jpg

496d89c43c2eaf8569390998c5206336633.jpg

5.写个demo让程序跑起来

package org.jsoft;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

	public static void main(String[] args) {

		//Spring应用启动起来
		SpringApplication.run(SpringbootApplication.class, args);
	}
}

新建个包写controller类

package org.jsoft.controller;

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

@Controller
public class SpringbootController {
    //把Hello World 写回浏览器
    @ResponseBody
    //接收来自于网页的hello请求
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World!";
    }
}

直接在主函数那里右键

e061afc9919ed0e433b0ab730c6d3280fe8.jpg

出现如下配置的时候就可以访问了(http://localhost:8080/hello)

b39d85bda15a9ffeea496f600aa97880ab5.jpg

正常情况下的显示结果

346aa5971924e5ac0ae29f405053a211fdb.jpg

非正常情况下显示的结果

476aca5512d5d9e728057774ef941ed09e2.jpg

解决办法:可能是因为工程路径的问题,把工程的结构改成运行主函数的那张图片中左侧的结构就可以了

Hello Word探究

1.POM文件

1.父项目

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

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

Spring Boot的版本仲裁中心

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

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.主程序类,主入口类

package org.jsoft;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

	public static void main(String[] args) {

		//Spring应用启动起来
		SpringApplication.run(SpringbootApplication.class, args);
	}
}

@SpringBootApplication   Spring Boot应用标注在某个类上说明这个类是Spring Boot的主配置类,Spring Boot就应该运行这个类的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  Spring Boot的配置类

        标注在某个类上,表示这是个Spring Boot配置类:

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

            配置类------配置文件;配置类也是容器中的一个组件:@Component

@EnableAutoConfiguration:开启自动配置功能;

           以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉Spring Boot开启自动配置功能;这样自动配置才能生效;

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

                    @AutoConfigurationPackage:自动配置包

                            @Import({Registrar.class}):

                                 Spring的底层注解@import,给容器中导入一个组件;导入的组件由{Registrar.class}

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

                                  @Import({AutoConfigurationImportSelector.class})

                                        给容器中导入组件

                                            AutoConfigurationImportSelector.class:导入那些组件的选择器

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

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

30e06cfb950fe0850cb0f2f3fc07322a42e.jpg

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

                                SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);

                                Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值

                                将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们;

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

转载于:https://my.oschina.net/u/3669883/blog/2231600

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值