Spring知识点

1.Spring
Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架,
它主要是为了解决企业应用开发的复杂性而诞生的:
目的:解决企业级应用开发的复杂性。

功能:使用基本的JavaBean代替EJB。

范围:任何Java应用。
Spring知识点_第1张图片

2.它具备以下优点
spring中避免了关键字new造成的耦合问题。

spring本身就是一个工厂,不需要再编写工厂类了。

spring不需要进行明确的引用关系的传递,直接通过配置完成

所有框架几乎都可以在spring中整合在一起使用。

spring编程=factory设计模式+proxy设计模式

3.spring的工作原理
spring 是按照设计模式精心打造的,它实现了工厂模式的工厂类,这个类名为BeanFactory(接口),在程序中通常使用它的子类ApplicationContext(也是接口)。

spring的核心是IOC(反转控制)容器,IOC也是一种编程思想,用于实现模块之间的解耦,在Spring中它的作用是对对象的创建,维护和销毁等生命周期的控制。IOC:把对象的创建、初始化、销毁交给spring来管理,而不是由开发者控制,实现控制反转。

spring是一个大的工厂类,spring的特点就是基于配置,在其配置文件中通过元素来创建实例对象。

4.spring有三种注入方式
1)使用有参构造方法注入

	 public class  User{
	            private String name;
	            public User(String name){
	                this.name=name;
	            }
	        } 
	        User user=new User("tom");

2)使用属性注入
通过属性的set方法进行注入。

	 public class  User{
	            private String name;
	            public void setName(String name){
	                this.name=name;
	            }
	        }
	        User user=new User();
	        user.setName("jack");

3) 使用接口注入
将调用类所有依赖注入的方法抽取到接口中,调用类通过实现该接口提供相应的注入方法。

	  public interface Dao{
	            public void delete(String name);
	        } 
	        public class DapIml implements Dao{
	            private String name;
	            public void delete(String name){
	                this.name=name;
	            }
	        }

4)通过容器完成依赖关系的注入

5.注解方式
1)@Component 为通用注解

2)@Repository 为持久层组件注解

3)@Service 为业务层组件注解

4)@Controller 为控制层注解

5)@Scope 为Bean的作用域注解

6)@Autowired 为指定Bean之间依赖关系的注解

7)@Inject 为指定Bean之间依赖关系的注解

8)@Value 为注入Spring表达式值的注解

9)@ResponseBody 为Ajax返回类型的注解

6.spring功能的作用
IOC :控制反转(获取方式发生反转,由最初new方式创建, 转为由框架创建、注入,这样可以降低对象之间的耦合度。)

AOP:面向切编程(是一种编程思想,将系统中非核心的业务提取出来,进行单独处理)

WebMVC :MVC结构的实现、与其他 Web技术整合(m模型v视图c控制)

DAO:与 JDBC整合和事务管理 (整合JDBC提供了封装,简化了DAO组件的编写)

ORM :与 ORM 框架整合

7.Spring的Bean有以下五种作用域
(1)singleton: SpringIoc容器只会创建该Bean的唯一实例;
(2)prototype: 每次请求都创建一个实例;
(3)request: 每次HTTP请求都会产生一个新的bean。
(4)session : 每次会话创建一个实例;
(5)global session : 全局的HttpSession中,容器会返回该bean的同一个实例。

8.Spring接口
Spring设计了一个Resource接口,为应用提供了更强的访问底层资源的能力,该接口拥有对应不同资源类型的实现类。

Resource接口的主要方法

boolean exists():资源是否存在

boolean isOpen():资源是否打开

URL getURL():返回对应资源的URL

File getFile():返回对应的文件对象

InputStream getInputStream():返回对应资源的输入流

Resource在Spring框架中起着不可或缺的作用,Spring框架使用Resource装载各种资源,包括配置文件资源,国际化属性资源等。

Resource接口的具体实现类

ByteArrayResource:二进制数组表示的资源。

ClassPathResource:类路径下的资源 ,资源以相对于类路径的 方式表示

FileSystemResource:文件系统资源,资源以文件系统路径方式表示,如d:/a/b.txt

InputStreamResource:对应一个InputStream的资源

ServletContextResource: 为访问容器上下文中的资源而设计的类。负责以相对于web应用根目录的路径加载资源。

UrlResource: 封装了java.net.URL。用户能够访问任何可以通过URL表示的资源,如Http资源,Ftp资源等。

9.Spring框架按其所属功能可以划分为五个主要模块
-核心模块(Core Container)

Spring的核心模块实现了IoC的功能,它将类和类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述。 由IoC容器负责类的创建,管理,获取等。BeanFactory接口是Spring框架的核心接口,实现了容器很多核心的功能。

Context模块构建于核心模块之上,扩展了BeanFactory的功能,包括国际化,资源加载,邮件服务,任务调度等多项功能。ApplicationContext是Context模块的核心接口。

表达式语言(Expression Language)是统一表达式语言(EL)的一个扩展,支持设置和获取对象属性,调用对象方法,操作数组、集合等。使用它可以很方便的通过表达式和Spring IoC容器进行交互。

-AOP模块

Spring AOP模块提供了满足AOP Alliance规范的实现,还整合了AspectJ这种AOP语言级的框架。通过AOP能降低耦合。

-数据访问集成模块(Data Access/Integration )

该模块包括了JDBC、ORM、OXM、JMS和事务管理

事务模块:该模块用于Spring管理事务,只要是Spring管理对象都能得到Spring管理事务的好处,无需在代码中进行事务控制了,而且支持编程和声明性的事务管理。

JDBC模块:提供了一个JBDC的样例模板,使用这些模板能消除传统冗长的JDBC编码还有必须的事务控制,而且能享受到Spring管理事务的好处。

ORM模块:提供与流行的“对象-关系”映射框架的无缝集成,包括Hibernate、JPA、MyBatis等。而且可以使用Spring事务管理,无需额外控制事务。

OXM模块:提供了一个对Object/XML映射实现,将java对象映射成XML数据,或者将XML数据映射成java对象,Object/XML映射实现包括JAXB、Castor、XMLBeans和XStream。

JMS模块:用于JMS(Java Messaging Service),提供一套 “消息生产者、消息消费者”模板用于更加简单的使用JMS,JMS用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

-Web模块

该模块建立在AoolicationContext模块之上,提供了Web应用的功能。如文件上传、FreeMarker等。
Spring可以整合Struts2等MVC框架。Spring自己提供了MVC框架Spring MVC。

-测试模块

Spring可以用非容器依赖的编程方式进行几乎所有的测试工作,支持JUnit和TestNG等测试框架。

你可能感兴趣的:(spring)