Spring
简介
轻量级的java开发架构,完成对象的定义,对象的获取,对象之间的依赖关系
SpringMVC:是轻量级Web框架,分离了控制器,模型对象,分派器
1.1 Spring的基本应用
1.11 什么是Spring
一站式,可以运行在服务器或者代码里
IOC(控制反转,对象创建的权力转移,由Spring创建对象)
AOP(面向切面编程),只需要写与业务相关的内容
EJB:老工具开发架构,低效的
采用三层体系架构
- 表示层:Struts框架整合
- 业务逻辑层:管理事务,记录日志
- 持久层:Hibernate、JdbcTemplate
1.12 Spring框架的优点
- 非侵入设计:不用实现接口,实现接口就是代码侵入
- 方便解耦 简化开发,像个工厂,降低主键耦合性
- 支持AOP:集中式的处理代码,简化代码开发
- 支持声明式事务处理:不用写代码处理事务,写个标签属性就可以处理事务
- 方便程序测试,提供Junit的支持
- 方便集成优秀框架,不取代,将框架整合在一起
- 降低JavaEE API的使用难度:对API封装,简化代码编写
1.13 Spring的体系结构
采用分层架构,一系列功能被分为20个模块,这20个模块又被分为4个模块
1.Core Container(核心容器)
- Beans:提供BeanFactory 将管理对象成为Bean
- Core:IoC 和DI功能
- Context:上下文模块
- SpEL:是一门语言:是查询和操作对象的强大的表达式语言
2.Data Access/Integration(数据访问集成)
JDBC:提供了JDBC抽象层,方便对数据库的操作
ORM:对象关系映射API
OXM:是一个XML
Transactions:支持实现特殊接口以及所有POJO类的编程和声明式的事务管理
3. Web
WebSocket
Servlet:MVC
Web:继承特性.文件上传
Portlet
4.其他模块
AOP:面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,降低耦合性.
Aspects:提供与AspectJ的集成功能,AspectJ是一个面向切面的编程框架
1.14 Spring下载
下载地址:https://repo.spring.io/simple/libs-release-local/org/springframework/spring/4.3.6.RELEASE/
依赖包:https://downloads.apache.org//commons/logging/binaries/commons-logging-1.2-bin.zip
选择第一个,下载姐雅
我们常用的是以RELEASE.jar结尾的
RELEASE-javadoc.jar:java压缩的api文档
RELEASE-sources
对应核心模块的四个jar包
1.2 Spring的核心容器
1.21 BeanFactory
创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,采用XML文件形式管理.
BeanFactory beanFactory=new XmlBeanFactory(new FileSystemResource("F:/sss/xml"))
1.22 ApplicationContext
是BeanFcatory的子接口
从class文件路径下取找,用下边的用的多
创建Spring容器以后,可以获取Spring容器中的Bean,Spring获取Bean的实例通常采用以下两种方法
- getBean(String name),返回Object
- 第二种
1.3 Spring的入门程序
需要准备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-4.3.xsd">
<!-- 将指定类配置给Spring,让Spring创建其对象的实例 ,id是咱们自己定义.calss是实现类的位置-->
<bean id="userDao" class="come.xiucai.ioc.UserDaoImpl"></bean>
</beans>
需要UserDAO接口
需要写 USERDAOimp 实现接口
测试类:
//1.初始化容器,加载配置文件
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
//2.通过容器获取UserDao实例,加入了强制类型转换
UserDao userDao=(UserDao) applicationContext.getBean("userDao");
//3.调用实例方法
userDao.say();