Spring
简介
分层的Java SE/EE应用 full - stack轻量级开源框架。
核心:IOC(Inverse Of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)
优势
- 方便解耦,简化开发
- AOP编程的支持
- 声明式事务的支持
- 方便程序的测试
- 方便集成各种优秀框架
- 降低JAVAEE API的使用难度
- Java源码经典学习范例
体系结构
1. Data Access/Integration(数据访问/集成)
数据访问/集成层包括 JDBC、ORM、OXM、JMS 和 Transactions 模块,具体介绍如下。
- JDBC 模块:提供了一个 JDBC 的抽象层,大幅度减少了在开发过程中对数据库操作的编码。
- ORM 模块:对流行的对象关系映射 API,包括 JPA、JDO、Hibernate 和 iBatis 提供了的集成层。
- OXM 模块:提供了一个支持对象/XML 映射的抽象层实现,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。
- JMS 模块:指 Java 消息服务,包含的功能为生产和消费的信息。
- Transactions 事务模块:支持编程和声明式事务管理实现特殊接口类,并为所有的 POJO。
2. Web 模块
Spring 的 Web 层包括 Web、Servlet、Struts 和 Portlet 组件,具体介绍如下。
- Web 模块:提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IoC 容器初始化以及 Web 应用上下文。
- Servlet模块:包括 Spring 模型—视图—控制器(MVC)实现 Web 应用程序。
- Struts 模块:包含支持类内的 Spring 应用程序,集成了经典的 Struts Web 层。
- Portlet 模块:提供了在 Portlet 环境中使用 MV C实现,类似 Web-Servlet 模块的功能。
3. Core Container(核心容器)
Spring 的核心容器是其他模块建立的基础,由 Beans 模块、Core 核心模块、Context 上下文模块和 Expression Language 表达式语言模块组成,具体介绍如下。
- Beans 模块:提供了 BeanFactory,是工厂模式的经典实现,Spring 将管理对象称为 Bean。
- Core 核心模块:提供了 Spring 框架的基本组成部分,包括 IoC 和 DI 功能。
- Context 上下文模块:建立在核心和 Beans 模块的基础之上,它是访问定义和配置任何对象的媒介。ApplicationContext 接口是上下文模块的焦点。
- Expression Language 模块:是运行时查询和操作对象图的强大的表达式语言。
Spring程序开发步骤
- 导入Spring开发的基本包坐标(Maven)
- 编写Dao接口和实现类
- 创建配置文件
- 在配置文件中配置实现类
- 使用Spring中API获取Bean实例
创建Maven项目
-
在pom.xml导入Spring开发的基本包坐标(导入坐标)
<!--导入spring的context坐标,context依赖core、beans、expression--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.5.RELEASE</version> </dependency>
-
编写Dao接口和实现类
public interface UserDao { public void save(); } public class UserDaoImpl implements UserDao { public void save() { System.out.println("Hello"); } }
-
在类路径下(resources)创建
applocationContext.xml
配置<?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"> //配置对应userDao的实现类 <bean id="userDao" class="dao.impl.UserDaoImpl"></bean> </beans>
-
测试
public class UserDaoDemo { public static void main(String[] args) { //创建ApplicationContext对象 ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml"); //通过getBean方法获取配置文件中Bean(指定的对象) UserDao userDao = (UserDao) app.getBean("userDao"); userDao.save(); } } //结果:Hello
Spring配置文件
Bean标签基本配置
默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功
bean
- 类型:标签·
- 归属:beans标签
- 作用:定义spring中的资源,受此标签定义的资源将受到spring控制
- 格式:
<beans>
<bean id="beanId" name="bean