Spring:全家桶 Spring、springMvc、Spring boot
、Spring cloud
历史:出现在2002左右,解决企业开发的难度。减轻项目模块之间的管理,类和类之间的管理,帮助开发人员创建对象,管理对象之间的关系
核心技术:Ioc、aop。能实现模块之间,类之间的解耦合(淡化类关系)。
管理依赖:classA中使用了classB的属性或者方法,叫做classA依赖classB
此次学习使用模块:Spring Framework
spring框架优点
- 轻量:核心功能jar总共在3M左右
- 针对接口编程,解耦合
- AOP编程的支持(AOP面向
切面编程
) - 方便集成各种优秀的框架,如:Spring+Mybatis
IoC(Inversion of Control)控制反转
核心思想
:把对象的创建,赋值,管理工作都交给代码之外的**容器(Spring)**实现,也就 是对象的创建是由其他外部资源完成- 目的:减少对代码的改动。也能实现不同的功能,实现解耦合
- IoC的体现:Tomcat容器:里面存放的Servlet对象,Listener,Filter对象
控制:创建对象,对象的属性赋值,对象之间的关系管理
反转
:把原来的开发人员管理,创建对象的权限转移给代码之外的容器实现
正转:由开发人员在代码中,使用new构造方法创建对象
- IoC的技术实现:
- DI(Dependcy Injection)是ioc的技术实现:
作用:只需要在程序中提供要使用的对象名称即可,至于对象如何在容器中创建、赋值、查找都由容器内部实现
Spring正是使用了di实现了ioc的功能,Spring底层创建对象使用了反射机制!
spring boot优点使用原因:
使用原因:
- 相对于SpringMVC+Spring+MyBatis框架进行开发,有了极大的简化:用之前三个框架的时候我们需要配置web.xml,配置Spring,配置Mybastis,并将他们整合在一起,而Spring Boot则抛弃了繁琐的xml配置过程!使用它:编码变得更加简单!配置变得更加简单!监控变得更加简单了!
特性:
① 能够快速创建基于Spring的应用程序;
② 能够直接使用java main方法启动内嵌的tomcat服务器运行Spring Boot程序,不许部署war包文件;
③ 提供约定的starter POW来简化Maven配置,让Maven的配置变得简单
④ 自动化配置,根据项目的Maven依赖配置,Spring Boot自动配置Spring、Spring Mvc等;
⑤ 基本可以完全不适用XML配置文件,采用注解配置;
⑥ 提供了程序检测检查等功能。
四大特性:自动配置、起步依赖、Actuator(开发极少涉及)、命令行界面(开发极少涉及)
入门实例:
1、如何创建一个springboot 框架web项目->创建空项目,新建module,添加起步依赖spring web;
2、使用springboot框架集成springmvc,使用注解集成
3、使用springboot框架的核心配置文件application.properties
设置内嵌tomcat端口:server.port=xxxx
设置上下文根:server.servlet.context-path=/xxxx
4、使用springboot框架的核心配置文件application.yml\application.yaml
server:
port: 8081
servlet:
context-path: /springboot
5、springboot框架的和配置文件application.properties/yml/yaml同时存在?
优先级:protperties>yml=yaml
#主核心配置文件
#激活使用配置文件
spring.profiles.active=dev
spring:
profiles:
adctive: dev
6、多环境下核心配置文件(properties/yml/yaml几个情况一样只做properties演示)的使用,工作中开发的环境有哪些:开发环境,测试环境,准生产环境,生产环境
7、springboot在和配置文件application.properties自定义配置文件
server.port=8080
server.servlet.context-path=/tyf
#自定义配置
MyName=tyf
websit=http://www.baidu.com
@Controller
public class IndexController {
@Value("${MyName}")
private String MyName;
@Value("${websit}")
private String websit;
@RequestMapping(value = "/say")
@ResponseBody
public String say(){
return "Hello " + MyName+ ":" + websit;
}
}