说明:

本人初学java,写博客是为了对知识的复习和总结,如有错误,请赐教。

【一】、什么是Spring?

 (1)概念: 
--> Spring是一个开源的轻量级框架,为解决企业应用程序开发复杂性而创建
(2)核心思想:
--> “拿来主义”,把业界最好的技术黏合在一起组成一个强大的企业级应用框架

【二】、Spring的组成

(1)Spring core 核心容器
--> 提供了Spring框架的基本功能
--> Spring core的主要组件是BeanFactory,是工厂模式的实现
--> BeanFactory利用IOC模式将应用程序的配置和依赖性规范与应用程序代码分开,实
降低了耦合性
--> 核心容器定义了创建、配置、管理bean的方式

(2)Spring Context
--> 是Spring的配置文件,给Spring框架提供上下文信息;Spring的核心配置文件:applicationContext.xml

(3)Spring AOP
-->为基于Spring的应用程序对象提供了事物管理服务,不用依赖EJB

(4)Spring DAO 
--> 管理异常处理和不同数据库供应商抛出的错误消息

(5)Spring ORM
--> Spring框架插入了若干个ORM框架,从而提供了ORM对象映射工具

(6)Spring WEB
--> WEB模块建立在 SpringContext之上,为基于Web的应用程序提供了上下文

(7)SpringMVC
--> MVC框架通过把Model、View、Controller分离,将复杂的web应用分成逻辑清
晰的几部分,简化了开发,减少出错

&&总结
--> Spring是一个开源的、非入侵式的轻量级框架,分七个模块组成,其中
核心容器提供了Spring框架的基本功能;核心思想是“拿来主义”,核心要点是
“支持在不同的J2EE(web或EJB)”环境之间重用

【三】、Spring三大核心组件的关系

--> 把Bean比作演员的话,Context就是舞台背景,Core就是演出时需要用的工具
--> Bean对象的本质就是java对象,不同点在于将创建和管理对象的权利交给了外部容器;Context要做的事就是发现Bean之间的关系,从而管理并维护Bean之间的关系;那怎么去发现Bean之间的关系呢?这就是Core要做的事了,Core提供了许多工具以便于Context去发现Bean之间的关系

【四】、Spring框架的两大核心:IOC和DI

--> IOC控制反转:把创建和管理对象生命周期的权力交给Spring容器;为什么叫反转?在没有Spring框架的时候,创建和管理对象是程序本身,而Spring框架诞生后,这个活由Spring容器来完成,这种创建和管理对象的权力的转换称之为反转

-->DI依赖注入:

在以前,当我们需要建立两个对象之间的依赖关系时,需要我们在一个对象中创建另一个对象的实例,如:我们在Person类中用Student s = new Student()这样的代码建立于Student类之间的关系;而现在Spring框架说:以后创建对象,建立(注入)和维护对象之间的依赖关系乃至于对象生命周期的管理都让我来做,你需要的时候和我说一声就行,我直接给你用!所以Spring既像为我么打工的又像是我们的好兄弟!

&&注意:

IOC和DI是同一概念,因为不管是IOC还是DI都是为了说明Spring采用动态的、灵活的方式来创建和管理对象。

【五】、IOC和DI的实现方式

--> IOC实现方式之配置XML文件 

spring 计数 1秒加1 spring counting_spring 计数 1秒加1

&&注意:

 Spring容器完成对象的存储是通过k,v的数据结构,K表示Bean对象的唯一标识,通过配置XML文件方式获取Spring容器里的对象时,K是xml文件中bean标签的属性id的值

-->IOC实现方式之注解@

(1)在需要Spring容器创建对象的类上加@Component注解,@Service注解用来业务层,@Controller用在控制层,@Component在不确定用途的时候使用

(2)同样需要配置XML文件,不过所用的标签不同

&& 这里解释一下为什么说是标签:因为XML是一种可扩展的标记语言,所以XML文件自然需要用到标签

spring 计数 1秒加1 spring counting_应用程序_02

&& context标签里的属性component-scan可以理解为@component注解扫描器,而base-backage指定了要扫描的包路径

--> DI依赖注入方式:

常用的有三种方式:

(1)@Autowired注解

spring 计数 1秒加1 spring counting_spring_03

 基于Spring应用开发下,依赖注入的前提是控制反转,需要被注入的对象对应的类上需要标记@Component注解

(2)构造注入

说白了就是通过构造方法传参,如:

Student s = new Student();

Student s2 = new Student();

Teacher t = new Teacher(s,s2);

(3)set注入

说白了就是通过set方法将对象的实例赋值给被注入的对象的属性,如:

setStudent(s);