Spring框架是Java应用最广的框架,其的成功来自于理念,并非是技术,其中几个理念非常重要,例如IoC(控制反转),AOP(面向切面编程)
低耦合/低侵入(解耦)
声明式事务管理
优势:
方便集成其他框架
降低 Java 开发难度
Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)
## **Core Container 核心容器**
> Core Container又是由,Spring Core,Spring Beans, Spring Context,SpEL,组成
>
- Spring Core
- Spring Core是IoC和DI基本实现
- 核心功能包括`BeanFactory,ApplicationContext`,提供Spring IoC对容器的访问
- Spring Beans
- 负责管理对象(Bean)的生命周期,配置和依赖注入.是IoC的容器的基础,可使用XML或注解方式定义Bean
- Spring Context
- 基于ApplicationContext接口,Spring容器的高级抽象
## Data Access/Intergration 数据访问于集成模块
- Spring JDBC
- 简化了传统的JDBC操作,提供`JDBCTemplate`类来处理数据库连接,SQL执行和结果集处理,减少冗余
- Spring ORM
- 集成了ORM(对象关系映射,为对象和数据库之间提供映射支持,简化数据访问层的开发
- Spring Data Access
- 提供对数据库访问的简化支持,包括Mybatis,Hibernate的持久化框架
## Web
- Spring Web MVC
- 基于MVC设计模式的Web框架,是Spring架构中最常用的模块之一
- Spring Web
- 为Web应用提供基本的支持,提供Servlet API和文件上传等功能
org.springframework
spring-context
6.1.14
org.aspectj
aspectjweaver
1.9.6
Spring IoC,反转控制,更好的理解是,IoC不是说明技术而是一种设计理念,把原本程序手动创建对象的控制权,交给Spring框架来管理
IoC虽然是一个抽象的概念,我们可以举个例子更好的理解
假设你想买个橙汁喝,有两种方法可以实现
这可以见的,在Spring框架中,IoC的核心思想就是:我不在主动执行任务和管理资源,而是提交给第三方,让它们处理我提出的需求,这就是IoC.我不再控制对象的创建和管理,而是由外部容器来管理和提供我所需要的”服务”
spring.xml
id
:为指定该Bean的名称.这个名称没有在Spring容器中引用这个Beanclass
:指定该Bean的单位完整路径Bean代表了Spring IoC容器管理的对象,Spring容器负责创建,配置和管理这些Bean
在Spring中,一共有一下几个方式来配置Bean:
@Configuration
注解配置)DI(Dependency Injection)是Spring IoC容器的核心功能之一,通过DI,spring实现了控制反转IoC,依赖注入有两种常用方法:构造函数注入和Setter方法注入
构造函数注入是通过类的构造方法将依赖传递给Bean
在Spring配置文件中,通过
constructor-arg
标签来指定构造函数参数
标签属性
name
:指定构造函数的名称,用于匹配构造函数参数value
:为参数提供值ref
:指定引用类型的Bean(其他Bean),用于注入对象type
:指定参数的类型(通常不使用,spring会自动推断)index
:指定参数在构造函数中的索引位置e.g1注入基本数据类型
该配置,Spring会将”张三”
和18
作为参数传递给Student类的构造函数.其会调用带有name和age的构造函数
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
返回的toString()
如下:
e.g2注入引用类型
该配置是在Student
类中有一个ClassInfo
类,提供constructor-arg
标签,Spring会将Class
Info类的Bean
注入到Student
类的构造函数中
private ClassInfo classInfo;
public Student(String name, Integer age, ClassInfo classInfo) {
this.name = name;
this.age = age;
this.classInfo = classInfo;
}
返回的toString()
如下:
Setter注入是提供对象的set方法将依赖传递给Bean.容器实例化后,会通过反射的机制调用Bean的set方法来注入依赖想
在Spring配置文件中,通过
property
标签来为Bean的属性设置值.属性的名称对于Java类中的set方法
name
:要注入的属性名value
:为基本数据类型和String
类型的属性赋值ref
:为引用类型的属性赋值,指定其他Bean
e.g1注入基本数据类型
上述配置中,student
必须带有setName
和setAge
的方法来接收传入的值
e.g2传入引用类型
参与评论
手机查看
返回顶部