[WEB开发] Web基础
一. HTTP
在之前的文章中, 我们已经详细学习过HTTP了.
- [计算机网络] HTTP/HTTPS
二. Web基础
2.1 spring全家桶
- spring framework: spring最底层的框架.
Spring Framework 是一个功能强大的 Java 应用程序框架,旨在提供高效且可扩展的开发环境。它结合了轻量级的容器(IOC)和依赖(DI)注入功能,提供了一种使用 POJO 进行容器配置和面向切面的编程的简单方法,以及一组用于AOP的模块. - spring boot: 用来快速的构建spring项目.
Spring Boot 是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。 - spring cloud: 微服务.
- spring data: 数据库.
详细介绍两个, 具体可以参考spring官网和spring中文网.
2.2 SpringWebBoot入门程序
- @SpringBootApplication: 启动类
- @RestController:请求处理类
- @RequestMapping: 标记资源路径 (资源路径 = 类路径 + 方法路径)
2.3 面试题: 为什么一个main方法就能将web程序启动?
答: 本质上web程序的启动依赖于web服务器. 调用run方法之后, web服务器tomcat启动, 再把程序部署在tomcat服务器中. web程序就启动了.这其中利用了maven一个非常重要的特性 - 依赖继承性. 只需要在pom.xml文件中引入spring-boot-starter-web依赖就好.
2.4 分层解耦
2.4.1 三层架构
- controller: 接收请求, 响应数据.
- service: 逻辑处理
- dao(data access object): 数据访问.
2.4.2 IOC
IOC(inversion of controller): 控制反转.
把对象的创建控制权由程序自身转移到了容器.
就是把某个对象交给IOC容器管理.
使用以下注解, 标记将对象交给IOC容器管理:
- @Component (通用)
- @Controller (请求响应层controller)
- @Service (逻辑处理层service)
- @Repository (数据访问层dao)
但是, 要让以上4个注解生效, 还需要进行组件扫描, 使用到的注解是 @ConponentScan.
注意:
- @SpringBootApplication 继承了 @Component注解.
- @Component 组件扫描的范围是: 当前包和当前包的子包.
2.4.3 DI
DI(dependency injection): 依赖注入.
容器为应用程序提供运行时所依赖的资源.
基于@Autowired的三种依赖注入方式:
-
属性注入
-
构造函数注入(如果只有一个构造函数, @Autowired可以省略)
-
set方法注入
2.4.4 IOC容器中存在多个相同类型Bean, DI如何注入?
此时不处理多种Bean, 会报如下错误:
解决:
-
被@Primary注解的Bean优先注入
-
@Qualifier 与 @Autowired配合使用, 参数是bean名
-
@Resource
2.4.5 @Autowired 与 @Resource的区别
-
@Autowired是spring框架提供的, @Resource是java提供的.
-
@Autowired是按照类型注入的, @Resource是按照bean名注入的.