一、绪论
1、学习内容
- javaEE企业开发技术概述
- javaEE容器——Spring
- ORM数据层——MyBatis/JPA
- Web层——Spring MVC
- 展现层——JSP/Thymeleaf
- 整合框架——SSM/SSH
- 用户模块分析
- 用户模块+功能模块设计
前端框架:Bootstrap,NodeJS,Vue/React/Angular
2、WEB端开发发展历程(java)
CGI
——每次请求产生一个进程,重量级。Servlet
——每次请求产生一个线程,轻量级。
控制逻辑、页面表现、业务逻辑全部混在一起,前端设计无法介入
JSP
——编译成Servlet,在HTML中嵌入java代码。前端开发人员可以进行较独立的设计和修改- Model1——
JSP+Bean
业务java代码封装到bean中
通过<jsp:useBean >标签获取/创建javabean
JSP负责页面表现和控制逻辑
Javabean负责业务逻辑 - Model2——
Web MVC
M——Model,模型(业务模型),即Web应用中的数据及对数据的处理,页面要显示的数据,页面要提交的数据,实体数据。还包括对数据的管理和维护。可进一步分层
V——View,视图,即web页面,对模型的展现
C——Controller,控制逻辑,接收用户请求转发给相应的模型进行处理,把模型处理结果返回给对应的视图进行展现。
3、JavaEE应用的特点
JavaEE是一套使用Java进行企业级Web应用开发的大家一致遵循的工业标准。
4、开发平台与工具包
- IntelliJ IDEA(Ultimate 教育版)
- Apache Tomcat8
- Mysql5.7
- Spring5
- MyBatis3.5
- JPA/Hibernate5
5、基于maven的java项目开发管理
- JDK8——Java运行环境
- IDEA (Eclipse EE)——集成开发环境
- Maven3——Java项目构建工具
- GIT/gitee——源代码管理工具
- Jenkins——持续集成工具(CI)
6、Maven开发配置(IDEA)
- (1)下载apache-maven,解压后放D:\software\maven
- (2)本地maven仓库:新建目录D:\software\maven\repo
- (3)Maven配置:修改D:\software\maven\conf\settings.xml
修改maven配置中的localRepository和mirror,如下:(不要放在xml的注释中!)
<localRepository>D:\software\maven\repo</localRepository>
<mirror>
<id>ali</id>
<mirrorOf>*</mirrorOf>
<name>ali maven repo</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
以上是windows,若为mac:
<localRepository>/usr/local/repo</localRepository>
<mirror>
<id>ali</id>
<mirrorOf>*</mirrorOf>
<name>ali maven repo</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
- (4)配置IDEA的maven设置:点击File->Settings菜单,搜maven
- (5)在IDEA中创建maven项目:FileNewproject,选择maven
- (6)项目信息完善,maven选择
- (7)功能开发
添加依赖:在pom中添加dependency元素即可,输入artifactId
自动联想完成添加
二、Spring概述
1、Spring简介
Spring是什么:
- 一个复杂而又简洁的javabean工厂
- Spring是一种轻量级的、非侵入式的Java/JavaEE应用框架
- 管理bean的创建和管理bean 的依赖
Spring优点:
- Spring的DI容器,提高组件之间的解耦
- SpringAOP提供通用任务的集中统一处理(安全、事务、日志等),实现更好的代码复用
2、IOC与DI
由容器来管理对象之间的依赖关系(而不是对象本身来管理),就叫“控制反转”或“依赖注入”
Bean容器
框架的基本思想就是IOC/DI
IOC(Inversion of Control)
:由容器来负责控制对象的生命周期和对象间的关系(一种减少类与类之间依赖的设计原则)
DI(Dependency Injection)
:在系统运行中,由容器动态的向某个对象提供它所需要的其他对象
Spring
就是一个IOC容器
IOC与DI,说的是一回事,但DI这个名词更能表达这种设计模式的思想
3、DI的两种方式
(1)设值注入
IOC容器使用属性的setter方法
来注入被依赖的实例
<property name=“userDao” ref=“userDao”/>
(2)构造注入
IOC容器使用构造器
来注入被依赖的实例
<constructor-arg ref=“db”/>
用index属性指定顺序,从0开始
4、两种注入方式对比
(1)设值注入的优点:
- 对于复杂依赖关系,如采用构造注入,导致构造器过于臃肿,spring在创建bean对象的同时,要同时实例化其依赖的其他所有实例对象,导致性能下降
- 对于某些属性可选的情况,多参数构造器更加复杂。
(2)构造注入的优点
- 如果依赖对注入顺序有要求,则可以在构造器中决定依赖关系的注入顺序
- 对依赖关系无须变化的bean
- 使用构造注入,组件内部的依赖关系对于组件调用者完全透明,更符合高内聚原则。
设值注入为主,构造注入为辅
三、Spring配置管理
1、XML
标记语言:
(1)Html(非严格,容错)
(2)Xml(可扩展标记语言,严格定义,格式良好的)
2、Spring容器
org.springframework.beans.factory.BeanFactory
是Spring IoC容器的实际代表者,IoC容器负责容纳bean,并对bean进行管理。
使用XML
作为配置元数据的描述格式,对那些我们希望通过Spring IoC容器管理的bean进行定义。
ApplicationContext
是BeanFactory
的扩展,功能得到了进一步增强,比如更易与Spring AOP集成、消息资源处理(国际化处理)、事件传递及各种不同应用层的context实现(如针对web应用的WebApplicationContext
)。
ApplicationContext可利用 ContextLoader在 Web应用启动的时候 自动创建 (SSH整合的时候 就是采用这种方式 )
创建 ApplicationContext容器时 ,所有 singleton bean
将会被 预初始化 。