发表于: 2017-09-20 22:14:26
1 625
今天完成的内容:
(1)关于Spring:
Spring诞生背景:Rod Johson在2002年编著的《Expert one to one J2EE design and development》一书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个从实际需求出发,着眼于轻便灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。Spring致力于J2EE应用的各层的解决方案,而不是仅仅某一层。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。Spring是一个开源框架,为了解决企业应用开发的复杂性而创建,它使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
关于IOC:首先要了解容器的概念,开发应用程序时,需要一个容器,容器中所有组件都被创建和装配,并且提供了所需的中间件服务,容器及其管理的组件所提供的最重要的好处是可插拔的体系结构。在组件类中,不需实例化组件,而是运行时由容器实例将依赖组件注入组件,对依赖项的控制由组件转到容器,这种模式就称为控制反转,即IOC。主要有两种形式:依赖查找和依赖注入。如今,依赖查找逐渐被依赖注入替代。
关于依赖注入:基本原则是应用程序对象不应该负责查找它们所依赖的资源或协作者,而是应该由IoC容器处理对象创建和依赖注入,导致资源的外部化,从应用程代码转移到容器。依赖注入分Setter注入和构造函数注入。
Setter注入:
通常,JavaBean 的属性是私有的,同时拥有一组存取器方法,以setXXX() 和getXXX() 形式存在。Spring 可以借助属性的set方法来配置属性的值,以实现setter方式的注入。在Spring 中我们可以使用<property> 元素配置Bean 的属性。<property>在许多方面都与<constructor-arg> 类似,只不过一个是通过构造参数来注入值,另一个是通过调用属性的setter 方法来注入值。
举例:使用setter注入为Student学生赋予一些基本信息,setter注入必须借助setXXX方法来配置属性的值。Student类一共有两个属性,name和id,都提供了相应的set方法。
public class Id {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
setter注入为Student学生赋予一些基本信息,下面的XML展示了Bean 的配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="id" class="com.loster.li.Id">
<property name="id" value="123"></property>
<property name="name" value="xiaoli"></property>
</bean>
</beans>
一旦Student被实例化,Spring 就会调用<property> 元素所指定属性的setter方法为该属性注入值。在这段XML代码中,<property> 元素会指示Spring 调用setName() 方法将name属性的值设置为“yoona”,调用setAge()方法将age属性的值设为24。注意的是name="xxx"中的xxx必须跟setXXX()方法中XXX是一样的。<property> 元素并没有限制只能注入String 类型的值,value 属性同样可以指定数值型(int、float、java.lang.Double 等)以及boolen 型的值。
构造方法注入:
将上面的Id.class修改为:
public class Id {
private int id;
private String name;
public Id(int id,String name){
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
将上面的Ixml修改为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="id" class="com.loster.li.Id">
<constructor-arg index="0" value="456"></constructor-arg>
<constructor-arg index="1" value="dawang"></constructor-arg>
</bean>
</beans>
明天的计划:两种方式写spring跑一下。
禅道:http://task.ptteng.com/zentao/task-view-10628.html 剩余4小时
评论