简单介绍下spring:


首先深入理解下Spring的两大特征(IOC和AOP)


IOC(依赖式注入):



它并不是一种技术实现,而是一种设计思想.原来需要我们手动的创建对象,管理对象的生命周期和协调工作.


现在全部交给spring去帮我们创建,管理,协调对象.每个对象只需要关注其自身的业务逻辑关系就可以了.


在这样看来,管理对象的角色发生了反转(控制反转)


举例:



某一天,你生病了,但是你不清楚自己到底得了什么病,你只知道自己头疼,咳嗽,全身无力。


这个时候你决定去药店买药,药店有很多种药,仅仅是治疗头疼就有好几十种,还有西药中药等区别。


然后你自己看了看说明书,选择了一盒你自己觉得最能治疗自己病症的药,付钱吃药,期待可以早点好起来。 


但是这个过程,对于一个病人来说,太辛苦了。头疼,咳嗽,全身无力,还要一个个的看药品说明书,


一个个的比较哪个药比较好,简直是太累了。这个时候,你决定直接去医院看医生。 


医生给你做了检查,知道你的病症是什么,有什么原因引起的;同时医生非常了解有哪些药能治疗你的病痛,


并且能根据你的自身情况进行筛选。只需要短短的十几分钟,你就能拿到对症下药的药品,即省时又省力。



aop(面向切面编程):



将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",


简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码



下面介绍Spring 2种最常用的注入方式:  setter和构造器注入其中"setter"最常用



1.setter注入


建立两个实体类 Person和Student 如下:


springboot如何使用setter注入_xml

springboot如何使用setter注入_ioc_02


我先简单解释下:

假如现在我要 注入Person,类中有两个属性name和Student 那么使用setter注入

必须要有注入属性的 set方法 get可以没有 但是通常set get成对出现。


下边是xml中的配置(重点的地方到了)


<bean id="person" class="com.sgai.qgpam.bd.entity.Person">
     <property name="sid" value="10"></property>
     <property name="student" ref="student"></property>
 </bean>
 <bean id="student" class="com.sgai.qgpam.bd.entity.Student">
     <property name="name" value="小芳"></property>
     <property name="age" value="18"></property>
 </bean>

类中可以这样注入Person

Person我们并没创建,用@Resource标签注入Person

其实@Resource 有一个默认属性@Resource(name="person")   name值默认为类的首字母小写 比如:

Person >>> person   name和.xml中要注入的bean id 一致<beanid="person"

下图用的是默认值@Resource相当于@Resource(name="person")


springboot如何使用setter注入_封装_03



对应关系如下图:


springboot如何使用setter注入_xml_04



2.下边我们开始简单介绍下构造器注入

一样两个测试类 Person 和  Student

Student 和 setter 一样

Person有所变化如下图:

springboot如何使用setter注入_spring_05

下边是.xml文件

springboot如何使用setter注入_xml_06

简单解释下:


index是索引,指定注入的属性,从0开始,如:0代表personDao,1代表str属性

 type是指该属性所对应的类型,如Persondao对应的是com.aptech.dao.PersonDAO

ref 是指引用的依赖对;

 value

对应关系和setter基本一致 小伙帮们快去动手试试吧