赞
踩
SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,,所以 SpringBoot是一个服务于框架的框架
点击新建一个project项目:
选择Spring Initializr,java版本,以及springboot官网地址: next
之后定义项目包名和对应java和jar包等版本号一路next之后finish即可
spring全家桶后期学习路线:
无论是properties还是yaml的配置文件,都要是application为文件名
对空格要求极高
使用yaml给属性赋值 :
yaml和properties对照:
这个类主要做了以下四件事情:
1.当你导入对应jar包,自动配置生效,对应包中proprieties可以根据自己需求配置,条件适配器就生效,会自动创建对象注入容器中,省去xml配置bean
2.你配置过,就会触发条件适配器,就会创建对应bean,注入到容器中,就可以在这些对象基础上进行业务开发
3.学了spring和mvc我们知道,当你写了一个类想注入到容器中,你需要配置bean,当你想运行一个项目的时候 你需要配置dispatchservlet相关才能运行项目,在springboot中,当你创建了一个项目,springboot已经在底层把所有相关的配置已经完全写好了,当你想用的时候,你就写上想对应的starter,那么 springboot就会判断
4.这个启动类的注解的3个主分支分别作用:标注主类时spring类、标注spring容器要扫描的包即要纳入spring管理的全部类包、加载所有实现自动装配的配置类
程序主入口。不能删也不能改
自动配置真正实现是从classpath中搜寻所有的META-INF/spring.factories配置文件 ,并将其中对应的 org.springframework.boot.autoconfigure. 包下的配置项,通过反射实例化为对应标注了 @Configuration的JavaConfig形式的IOC容器配置类 , 然后将这些都汇总成为一个实例并加载到IOC容器中。
结论:
SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值
将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;
整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;
它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;
有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作。
JSR303校验:判断输入的数据合不合法
注解意义如下
属性不能调用多态,如果java中没有多态性,那么抽象类和接口就没有实际意义
jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法。
这些jar包一般都会放在lib目录下的
Maven是项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件
在Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。
bean是计算机自动生成的类,bean是一个由Spring IoC容器实例化、组装和管理的对象。也就是说,bean并不是程序员编辑的,而是程序运行时,由spring通过反射生成的。在程序中,我们并不使用代码去new一个类(service,dao层等),那么谁来new呢?又是如何new的呢?
那么,bean就相当于class AddFactory:IFactory这一层,而为了适用性更广,spring是通过反射来进行new的这个过程的,只要识别到我们打到类上的标签,比如@Service,@Componet等,就会通过反射将类实例化出来,并且统一放到IOC容器(一个map)中管理起来,当发现到@Autowire,@Resource等标签时,就通过名字或者类型将对象从map中拿出来注入进去。
Maven是一个项目管理工具, Maven有一个生命周期,当你运行mvn install的时候被调用。这条命令告诉Maven执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个JAR文件这样的工作。 此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
通俗易懂点来说。项目开发在写代码的同时,会伴随着许多必不可少的事情要做,下面我们举几个例子感受一下:
我们需要引用各种jar包,较大的工程肯能需要引入十几个或者上百个jar包,这都需要我们手动一个一个导入到工程目录,而且经常会遇到各种让人抓狂的jar包冲突,版本冲突。 世界上没有不存在bug的代码,为了减少bug,写完代码后,我们还要写一些单元测试,然后一个个的运行来检查代码质量。 再优雅的代码也是要出来买的。我们后面还需要将代码与各种配置文件、资源整合到一起,定型打包,如果是web项目,还需要将之发布到服务器,供人蹂躏。 试想一下,如果有一种工具,可以将你从上述的繁重工作中解放出来,能帮你构建工程、管理jar包、编译代码,还能帮你自动运行单元测试、打包、生成报表,甚至能帮你部署项目,生成web站点,你会心动吗?
Maven就可以解决上面所提到的这些问题
(1)Spring 创建对象
(2)Spirng 注入属性
Bean 管理操作有两种方式:1.基于 xml 配置文件方式实现
2.基于注解方式实现
这是 Spring Boot 最最最核心的注解,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。
其实这个注解就是 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan 这三个注解的组合,也可以用这三个注解来代替 @SpringBootApplication 注解。 @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。
@EnableAutoConfiguration 自动配置。
@ComponentScan 组件扫描,可自动发现和装配一些Bean。
@Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。
@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
@Autowired自动导入。
@PathVariable获取参数。
用于标注数据访问组件,即DAO组件。
用于标注业务层组件。
用于标注控制层组件(如struts中的action),包含@Controller和@ResponseBody
表示该方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析
为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
组件扫描。相当于,如果扫描到有@Component @Controller @Service等这些注解的类,则把
这些类注册为bean。
指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上。
相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上。
byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 当加上(required=false)时,就算找不到bean也不报错。
当有多个同一类型的Bean时,可以用@Qualifier("name")来指定。与@Autowired配合使用
没有括号内内容的话,默认byName。与@Autowired干类似的事。
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
该注解有六个属性:
params:指定request中必须包含某些参数值是,才让该方法处理。
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
value:指定请求的实际地址,指定的地址可以是URI Template 模式
method:指定请求的method类型, GET、POST、PUT、DELETE等
consumes:指定处理请求的提交内容类型(Content-Type),如application/json,text/html;
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
用在方法的参数前面。 @RequestParam String a =request.getParameter("a")。
路径变量。参数与大括号里的名字一样要相同。 RequestMapping("user/get/mac/{macAddress}") public String getByMacAddress(@PathVariable String macAddress){ //do something; }
1.根目录下的config优先级最高
2.项目下的配置文件第二
3.resource下的配置文件第三
4.类路径下的配置文件第四(默认的) ,所以添加配置文件很简单
yaml实现多文档模块:
可以在yaml里面配置多环境配置文件
跳转的页面一般都放在templates文件夹下
前端写一个按钮(请求),点击之后会触发一个超链接,这个超链接对应的就是后端controller的request mapping(“/emps”),点击之后会进行后端的这个方法的处理,比如处理之后会return一个页面返回给前端
前端交给我们的页面,是html页面。如果是我们以前开发,我们需要把他们转成jsp页面,jsp好处就是当我们查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示,及交互等。
jsp支持非常强大的功能,包括能写Java代码,但是呢,我们现在的这种情况,SpringBoot这个项目首先是以jar的方式,不是war,像第二,我们用的还是嵌入式的Tomcat,所以呢,他现在默认是不支持jsp的。
那不支持jsp,如果我们直接用纯静态页面的方式,那给我们开发会带来非常大的麻烦,那怎么办呢?
SpringBoot推荐你可以来使用模板引擎:
模板引擎,我们其实大家听到很多,其实jsp就是一个模板引擎,还有用的比较多的freemarker,包括SpringBoot给我们推荐的Thymeleaf,模板引擎有非常多,但再多的模板引擎,他们的思想都是一样的,什么样一个思想呢我们来看一下这张图:
模板引擎的作用就是我们来写一个页面模板,比如有些值呢,是动态的,我们写一些表达式。而这些值,从哪来呢,就是我们在后台封装一些数据。然后把这个模板和这个数据交给我们模板引擎,模板引擎按照我们这个数据帮你把这表达式解析、填充到我们指定的位置,然后把这个数据最终生成一个我们想要的内容给我们写出去,这就是我们这个模板引擎,不管是jsp还是其他模板引擎,都是这个思想。只不过呢,就是说不同模板引擎之间,他们可能这个语法有点不一样。其他的我就不介绍了,我主要来介绍一下SpringBoot给我们推荐的Thymeleaf模板引擎,这模板引擎呢,是一个高级语言的模板引擎,他的这个语法更简单。而且呢,功能更强大。
模拟数据库中的数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。