概述:Spring是由Rod Johnson组织开发的一个分层的java SE/EE一站式的轻量级开源框架,以IOC(控制反转)和AOP(面向切面)为核心,的开发模式。
注:喜欢的朋友可以关注公众号“JAVA学习课堂”系统学习相关技术,持续更新。
目录
1.Spring框架的优点:
2.Spring的体系结构:
3.Spring核心容器
4.Spring 的依赖注入
4.1依赖注入的实现
1.Spring框架的优点:
-
非侵入式设计:它可以使应用程序代码对框架的依赖最小化。
-
方便解耦、简化开发:将所有对象的创建和依赖关系交给Spring 的容器进行管理,降低组件之间的耦合性。
-
支持AOP:运行将一些通用的任务,安全,事务,日志等进行集中处理。
-
支持声明式事务处理:通过配置就可以完成对事务的管理。
2.Spring的体系结构:
spring采用的是分层架构,主要分为,Core Container、Data Access/Integration、Web、AOP、Instrumentation、Test.
3.Spring核心容器
spring提供了两种核心容器,分别是BeanFactory和ApplicationContext.
BeanFactory:提供了完整的ioc服务,BeanFactory是一个管理bean的工厂,主要负责初始化Bean,并调用生命周期的方法。
ApplicationContext:是BeanFactory的子接口,在运行的时候就初始化了所有的Bean,而BeanFactory只有在使用Bean的时候才会初始化
1.创建ApplicationContext
接口实例的常见方法:
使用XML配置文件来定义beans,可以使用ClassPathXmlApplicationContext
来加载这些配置
//将从类路径(classpath)中加载名为applicationContext.xml的XML配置文件。
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
2.使用FileSystemXmlApplicationContext
(XML配置):
ApplicationContext context = new FileSystemXmlApplicationContext("file:/path/to/your/applicationContext.xml");
4.Spring 的依赖注入
依赖注入(DI)与控制反转(Ioc)的含义相同,当以一个java对象需要调用类一个java对象时,调用者需要采用 "new 被调用者"来创建对象。
在使用Spring之后,实例对象不在是调用者创建,而是转换为spring容器来创建,容器负责控制程序间的关系,控制权由应用代码转换到了Spring容器,控制权反转了。
4.1依赖注入的实现
-
Setter方法注入:使用Setter方法注入被依赖的对象,通过调用无参构造器的方式实例化Bean,调用Bean的Setter方法实现基于setter方法的依赖注入
-
构造方法注入:使用构造方法注入被依赖的实例,每个参数代表着一个依赖。
1. 构造函数注入
首先,定义一个服务接口和一个实现类:
public interface MyService {
void doSomething();
}
public class MyServiceImpl implements MyService {
private final Dependency dependency;
// 通过构造函数注入依赖
public MyServiceImpl(Dependency dependency) {
this.dependency = dependency;
}
@Override
public void doSomething() {
// 使用依赖
dependency.someMethod();
}
}
public class Dependency {
public void someMethod() {
// 依赖的具体实现
}
}
在Spring配置文件中(XML)进行配置:
<bean id="dependency" class="com.example.Dependency"/>
<bean id="myService" class="com.example.MyServiceImpl">
<constructor-arg ref="dependency"/>
</bean>
2.Setter方法注入
public class MyServiceImpl implements MyService {
private Dependency dependency;
// 通过setter方法注入依赖
public void setDependency(Dependency dependency) {
this.dependency = dependency;
}
// ... 省略其他方法 ...
}
在Spring配置文件中(XML)进行配置:
<bean id="dependency" class="com.example.Dependency"/>
<bean id="myService" class="com.example.MyServiceImpl">
<property name="dependency" ref="dependency"/>
</bean>