1、什么是Spring框架?
Spring框架(Spring Framework)是分层的 Java SE/EE应用全栈 (full-stack) 轻量级开源框架,以 IOC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核。
提供了表示层 SpringMVC 和持久层(数据访问层) Spring JDBCTemplate 以及业务逻辑层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。
2、Spring框架有哪些主要??椋?br>
具体可以参考官方文档《Spring Framework Documentation》Spring Framework Documentation,包含以下???,如:
核心容器Core、测试???a target="_blank">Testing、数据访问Data Access、Web应用Web Servlet
等等。
3、使用Spring框架能带来哪些好处?
提供的 IoC容器和DI机制避免硬编码所造成的过度耦合;
AOP方便进行面向切面编程,允许将一些通用任务如安全、事务、日志等进行集中式管理;
对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的支持;
对 JavaEE API(如 JDBC、JavaMail、远程调用等)进行了封装,使这些 API 的使用难度大为降低。
4、什么是控制反转( Inversion of Control )?什么是依赖注入(Dependency Injection
)?
Dependency injection (DI) is a process whereby objects define their dependencies (that is, the other objects with which they work) only through constructor arguments, arguments to a factory method, or properties that are set on the object instance after it is constructed or returned from a factory method. The container then injects those dependencies when it creates the bean.
依赖项注入(DI)是一个过程,在此过程中,对象仅通过构造函数参数、工厂方法参数或对象实例被构造或从工厂方法返回后设置的属性来定义它们的依赖项(即它们工作的其他对象)。然后容器在创建bean时注入这些依赖项。
This process is fundamentally the inverse (hence the name, Inversion of Control) of the bean itself controlling the instantiation or location of its dependencies on its own by using direct construction of classes or the Service Locator pattern.
从根本上说,这个过程与bean本身相反(因此得名“控制反转”),它通过使用类的直接构造或Service Locator(服务定位器)模式来控制依赖项的实例化或位置。
<bean id="exampleBean" class="examples.ExampleBean">
<!-- setter injection using the nested ref element -->
<property name="beanOne">
<ref bean="anotherExampleBean"/>
</property>
<!-- setter injection using the neater ref attribute -->
<property name="beanTwo" ref="yetAnotherBean"/>
<property name="integerProperty" value="1"/>
</bean>
<bean id="anotherExampleBean" class="examples.AnotherBean"/>
<bean id="yetAnotherBean" class="examples.YetAnotherBean"/>
public class ExampleBean {
private AnotherBean beanOne;
private YetAnotherBean beanTwo;
private int i;
public void setBeanOne(AnotherBean beanOne) {
this.beanOne = beanOne;
}
public void setBeanTwo(YetAnotherBean beanTwo) {
this.beanTwo = beanTwo;
}
public void setIntegerProperty(int i) {
this.i = i;
}
}
上述实例中,setBeanOne、setBeanTwo、setIntegerProperty中的beanOne、beanTwo、integerProperty就是对象的依赖项,容器在创建exampleBean这个bean时会注入这些依赖项。这个过程叫做依赖注入,是Spring框架控制反转思想的体现。将以前硬编码完成的实例化对象的过程交由Spring来控制管理,降低了层与层之间的依赖关系,转成Spring框架来维护。