Spring框架初学
简介
Spring的核心是DI(依赖注入)和AOP(面向切面编程)。
JavaBean:
JavaBean是一种特殊的Java类,即:有默认构造方法,只有get和set方法的java类的对象。
专业解释:软件组件就是指可以进行独立分离、易于重复使用的软件部分。
JavaBean就是一种基于Java平台的软件组件思想,JavaBean也是一种独立于平台和结构的应用程序编程接口(API)。JavaBean保留了其他软件组件的技术精华,并添加了被其他软件组件技术忽略的技术特性,使得它成为完整的软件组件解决方案的基础,并可移植的Java平台上方便的用于网络世界中。
满足的三个条件:
- 实现Serializable接口
- 提供无参数的构造器
- 提供getter和setter方法访问它的属性
JavaBean的setter和getter方法:
一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter方法: getUserName/setUserName。
但是,还有一些特殊情况:
如果属性名的第二个字母大写,那么该属性名直接用作getter/setter 方法中 get/set的后部分,就是说大小写不变。例如属性名为uName,方法是getuName/setuName。
如果属性名的前两个字母是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作 getter/setter 方法中 get/set的后部分。例如属性名为URL,方法是getURL/setURL。
如果属性名的首字母大写,也是属性名直接用作 getter/setter方法中 get/set的后部分。例如属性名为Name,方法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。
如果属性名以”is”开头,则getter方法会省掉get,set方法会去掉is。例如属性名为isOK,方法是isOK/setOK。需要注意的是有些开发工具自动生成的getter/setter方法,并没有考虑到上面所说的特例情况,会导致bug的产生。
我们在定义JavaBean的属性名时,应该尽量避免属性名的头两个字母中任意一个为大写以及属性名以”is”开头。
实例:HelloWord
//service interface
public interface GreetingService{
void sayGreeting();
}
//Implement
public class GreetingServiceImpl implements GreetingService{
private greeting;
public GreetingServiceImpl(){}
public GreetingServiceImpl(String greeting){
this.greeting = greeting;
}
public void sayGreeting(){
System.out.println(greeting);
}
public void setGreeting(String greeting){
this.greeting = greeting;
}
}
在Spring中配置Helloworld:
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<!-- 略去 -->
<bean id="greetingService" class="com.xxx.helloword">
<property name="greeting" value="Hello World!"/>
</bean>
</beans>
property标签是利用,setter方法来设置属性值。
另外一种方法,通过GreetingImpl的构造方法来配置,利用constructor-arg标签xml如下:
<!-- 略去 -->
<bean id="greetingService" class="com.xxx.helloword">
<constructor-arg value="Hello World!"/>
</bean>
上面只是一个简单的例子,展示了Spring如何将一个字符串注入到Bean中,Spring的真正威力在于把其他的一个Bean注入到另一个Bean中。