Spring的注入方式Setter和构造器

来源:互联网 发布:软件项目成果报告 编辑:程序博客网 时间:2024/06/07 19:55

简单介绍下spring:

首先深入理解下Spring的两大特征(IOC和AOP)
IOC(依赖式注入):
它并不是一种技术实现,而是一种设计思想.原来需要我们手动的创建对象,管理对象的生命周期和协调工作.
现在全部交给spring去帮我们创建,管理,协调对象.每个对象只需要关注其自身的业务逻辑关系就可以了.
在这样看来,管理对象的角色发生了反转(控制反转)
举例:
某一天,你生病了,但是你不清楚自己到底得了什么病,你只知道自己头疼,咳嗽,全身无力。
这个时候你决定去药店买药,药店有很多种药,仅仅是治疗头疼就有好几十种,还有西药中药等区别。
然后你自己看了看说明书,选择了一盒你自己觉得最能治疗自己病症的药,付钱吃药,期待可以早点好起来。 
但是这个过程,对于一个病人来说,太辛苦了。头疼,咳嗽,全身无力,还要一个个的看药品说明书,
一个个的比较哪个药比较好,简直是太累了。这个时候,你决定直接去医院看医生。 
医生给你做了检查,知道你的病症是什么,有什么原因引起的;同时医生非常了解有哪些药能治疗你的病痛,
并且能根据你的自身情况进行筛选。只需要短短的十几分钟,你就能拿到对症下药的药品,即省时又省力。

aop(面向切面编程):
将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",
简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码

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

1.setter注入
建立两个实体类 Person和Student 如下:



我先简单解释下:
假如现在我要 注入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" class="com.sgai.qgpam.bd.entity.Person">

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



对应关系如下图:



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

一样两个测试类 Person 和  Student

Student 和 setter 一样

Person有所变化如下图:


下边是.xml文件


简单解释下:

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

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

· ref 是指引用的依赖对;

· value 当注入的不是依赖对象,而是基本数据类型时,就用value

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



阅读全文
1 0