优点
1、非侵入式开发
2、方便解耦,简化开发
3、支持AOP
4、支持声明式的事务处理
5、方便程序的测试
6、方便集成各种优秀框架
7、降低JAVAEE API的使用难度
体系结构
采用了分层框架,一系列的功能要素被分成20个模块,又把这20个模块分成了四个部分:1、核心模块;2、数据处理;3、web;4、其他
1、核心容器
Beans:提供了BeanFactory,spring将管理对象成为Bean
Core:提供了Spring框架的基本组成部分,包括IoC和DI功能。IoC控制反转,DI
Context:建立再Core和Beans模块的基础上,他是访问,定义以及配置的任何对象的媒介
SpEL:Spring3.0之后新增的模块是运行时查询和操作对象的强大的表达式语言
2、数据处理
JDBC:提供了一个JDBC的一个抽象层的一个封装,大幅度减少再开发过程中对数据库操作的编码
ORM:对象关系映射:对流行的关系对象映射API,包括JPA,JDO和Hibernate提供了集成层支持
oxm: 提供了一个支持对象/XML映射层的抽象层实现,如JAXB,Castor,XMLBeans,JiBX和XStream
JMS: 指java信息床底服务,包含使用和产生信息的特性,自4.1版本之后支持域Spring-message模块集成
Transaction:支持对实现特殊接口以及所有POJO类的编程和声明式的事务管理
3、Web
Servlet:也称Spring-webmvc模块,包含Spring模型-视图-控制器(MVC)和REST Web Services实现的Web程序
Web:提供了基本的Web开发集成特性,如:文件上传,使用servlet监听器来初始化IoC容器以及Web应用上下文。
portlet:提供了再protlet环境中使用MVC实现,类似于Servlet模块的功能
4、其他模块
AOP:提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,降低耦合性
Aspects:提供了与AspectJ的集成功能,ApsectJ是一个功能强大且成熟的面向切面编程(AOP)框架
Test:提供了单元测试和集成测试的支持
项目搭建
Spring项目创建步骤及可能的错误
狂神说java
ioc本质
无论怎么增加接口事项类,主动权在用户,用户选择调用什么
代码语言:javascript复制# userServiceImpl
public class userServiceimpl implements userService{
private userdao userdao;
//利用set进行动态值的注入
public void setUserdao(userdao userdao) {
this.userdao = userdao;
}
@Override
public void getuser() {
userdao.getuser();
}
}
# mytest
public class mytest {
public static void main(String[] args) {
//用户实际调用的是业务层,dao层他们不接触
userServiceimpl userServiceimpl=new userServiceimpl();
userServiceimpl.setUserdao(new usermysqlimpl());
userServiceimpl.getuser();
}
}