我的第一次Spring学习
2015-06-04 20:03
183 查看
*****Spring的依赖注入是依赖java的反射机制
*****Spring是面向接口编程的方式进行耦合的,达到松耦合。
*****Spring的IoC容器(或依赖注入,控制反转)即应用了软件工程中工厂模式这种设计模式。为对象设置属性的方式即控制反转。
--这种依赖注入方式是一种很好的解耦方式。而Spring将Bean与配置文件组织在一起,而不是以硬编码(即在需要的地方new一个实例的方式)的方式耦合在一起,以达到解耦合的目的。
配置文件:
1.如何实例化Spring容器:
--ApplicationContext ctx=new ClassPathXmlApplicationContext("***.xml"); --***.xml具体配置文件的名称
2.Spring如何管理实例化某个类的对象:(以实例化Chinese类为例,该类实现了Person接口)
--Spring容器的getBean方法(该方法是重载方法)实例化某个类的对象的。
--同时Spring容器是调用该类的无参构造方法实例化该类的。所以如果该类中存在有参的构造方法,必须显式定义无参构造方法。
--Person person=ctx.getBean(“person”,Person.class);
--问题:为何对象的类型说明是接口类?
--因为Spring是以面向接口编程进行松耦合的。这样该对象就可以引用不同的类(这些类都必须实现了接口),只需要在配置文件修改该对象所引用的类的全名即可,Spring容器就自动将这些类的实例化引用赋值给对象变量。
3.Spring如何为对象的属性赋值的:
a) 设值注入:Spring容器在实例化类时,会调用属性的setter方法为属性赋值,此时Spring容器在实例化类还是调用该类的无参构造方法!!
i. 当该属性的类型为数值类型或字符串类型时,配置文件如下:
--<property name=”FieldName” value=”Value”></property> 将Value值赋值给属性名为FieldName的属性
ii. 当该属性的类型为其他类时,则该属性的类型应该是接口类,原因:请看上面
部分
--配置文件的定义:
b) 构造注入:属性的初始化在该类的有参构造方法中实现,此时Spring容器会调用该类的有参构造方法为属性初始化
类文件:
配置文件:
注意: index用于指定该构造参数值将作为第几个构造参数值。
****设值注入与构造注入的区别:
I. 设值注入是先通过无参数的构造器实例化类,然后调用对应的属性的setter方法注入依赖关系
II. 构造注入是直接通过调用有参数的构造器,在实例化类的同时,就已经完成了对依赖关系的注入。
--问题:那应该选择哪种方式对依赖关系进行注入?
--答:建议采用设值注入为主,构造注入为辅
*****Spring是面向接口编程的方式进行耦合的,达到松耦合。
*****Spring的IoC容器(或依赖注入,控制反转)即应用了软件工程中工厂模式这种设计模式。为对象设置属性的方式即控制反转。
--这种依赖注入方式是一种很好的解耦方式。而Spring将Bean与配置文件组织在一起,而不是以硬编码(即在需要的地方new一个实例的方式)的方式耦合在一起,以达到解耦合的目的。
配置文件:
1.如何实例化Spring容器:
--ApplicationContext ctx=new ClassPathXmlApplicationContext("***.xml"); --***.xml具体配置文件的名称
2.Spring如何管理实例化某个类的对象:(以实例化Chinese类为例,该类实现了Person接口)
--Spring容器的getBean方法(该方法是重载方法)实例化某个类的对象的。
--同时Spring容器是调用该类的无参构造方法实例化该类的。所以如果该类中存在有参的构造方法,必须显式定义无参构造方法。
--Person person=ctx.getBean(“person”,Person.class);
--问题:为何对象的类型说明是接口类?
--因为Spring是以面向接口编程进行松耦合的。这样该对象就可以引用不同的类(这些类都必须实现了接口),只需要在配置文件修改该对象所引用的类的全名即可,Spring容器就自动将这些类的实例化引用赋值给对象变量。
3.Spring如何为对象的属性赋值的:
a) 设值注入:Spring容器在实例化类时,会调用属性的setter方法为属性赋值,此时Spring容器在实例化类还是调用该类的无参构造方法!!
i. 当该属性的类型为数值类型或字符串类型时,配置文件如下:
--<property name=”FieldName” value=”Value”></property> 将Value值赋值给属性名为FieldName的属性
ii. 当该属性的类型为其他类时,则该属性的类型应该是接口类,原因:请看上面
部分
--配置文件的定义:
b) 构造注入:属性的初始化在该类的有参构造方法中实现,此时Spring容器会调用该类的有参构造方法为属性初始化
类文件:
配置文件:
注意: index用于指定该构造参数值将作为第几个构造参数值。
****设值注入与构造注入的区别:
I. 设值注入是先通过无参数的构造器实例化类,然后调用对应的属性的setter方法注入依赖关系
II. 构造注入是直接通过调用有参数的构造器,在实例化类的同时,就已经完成了对依赖关系的注入。
--问题:那应该选择哪种方式对依赖关系进行注入?
--答:建议采用设值注入为主,构造注入为辅
相关文章推荐
- java中serializable解析及用途
- 20135208 JAVA第三次实验
- [转载]JAVA中this用法小结
- spring_aop
- Java中继承thread类与实现Runnable接口的区别
- java实现接口与继承类的区别
- 深入理解java多态性
- Eclipse 4.4.2 取消空格键代码上屏
- C通过JNI调用JAVA
- Java基础—多线程和多进程
- Spring源码追踪3——AOP机制
- spring security自定义过滤器
- 欢迎使用CSDN-markdown编辑器
- 字典树模板(java)
- Java for LeetCode 141 Linked List Cycle
- 利用java反射重写toString
- Java项目开发环境构建工具 Gradle 使用笔记(简单、基本)
- spring整合activemq发送MQ消息[Topic模式]实例
- SpringMVC笔记
- spring security原理讲解(1)