第一章、Spring入门
一、Spring特点
(1)IOC解耦使用IOC机制避免硬编码造成程序耦合
Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
(2)AOP:Aspect Orentied Programing 面向切面编程
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
(3)声明式事务管理
只需要通过配置就可以完成对事务的管理,而无需手动编程
(4)对JDBC进行封装,更加灵活操作数据库
(5)提供MVC设计模式:Spring MVC
(6)提供文件上传,定时器等工具类
(7)对其他框架的支持(集成其他框架)
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
二、Spring框架结构
- Data Access/Integration层包含有JDBC、ORM、OXM、JMS和Transaction模块。
-
Web层包含了Web、Web-Servlet、WebSocket、Web-Porlet模块。
-
AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现。
-
Core Container(核心容器):包含有Beans、Core、Context和SpEL模块。
-
Test模块支持使用JUnit和TestNG对Spring组件进行测试。
三、Spring框架的功能总览
核心功能:
(1)Spring容器与bean的生命周期管理
(2)AOP
将辅助代码在不修改原来代码基础上织入到原始对象的代码中,对原来的代码增强.
(3)数据访问和集成
1.事务管理
1.编程式事务
2.无侵入性声明式事务
2.JDBCTemplate支持
3.DAO支持
4.ORM框架支持
Hibernate JPA MyBatis
(4)Web
SpringMVC
视图技术
其他WEB框架的集成
(5)外部系统集成
WEB Services EJB JMS JMX JCA CCI
Email 任务调度 动态语言支持 缓存
四、Spring快速入门
(1)引入Spring maven坐标
在pom.xml引入spring-context maven坐标
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.15.RELEASE</version>
</dependency>
</dependencies>
(2)编写Spring核心配置文件
在src/main/resources右键-new-other-xml-XML File-next-applicationContext.xml,创建配置文件
名称:任意,约定:applicationContext.xml
内容:参考spring文档:spring-framework-5.1.5.RELEASE/docs/spring-framework-reference/core.html#spring-core
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
在程序中读取Spring配置文件,通过Spring框架获得Bean,完成相应操作
(3)HelloWorld 实现
核心包:
spring-framework-5.1.5.RELEASE-dist.zip
包结构:org.springframework
Spring核心开发包:
spring-core-5.1.5.RELEASE.jar
包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心。
spring-beans-5.1.5.RELEASE.jar
所有应用都要用到的,它包含访问配置文件、创建和管理bean
以及进行Inversion of Control(IoC) / Dependency Injection(DI)操作相关的所有类
spring-context-5.1.5.RELEASE.jar
Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,
如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等。
spring-expression-5.1.5.RELEASE.jar
Spring表达式语言
public class HelloService {
public String sayHello(String name) {
return "Hello "+name;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
id:bean的名称,一般约定:类名首字母小写
class:类的全限定名(包名+类名)
-->
<bean id="helloService" class="com.tjetc.service.HelloService"></bean>
</beans>
public static void main(String[] args) {
//实例化Spring容器对象
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//从容器对象拿bean
HelloService helloService = (HelloService) context.getBean("helloService");
//调用对象的方法
String result = helloService.sayHello("李四");
//打印结果
System.out.println(result);
}