使用Spring的原因
- 總述:容器框架页徐,可以配置各種bean,并通過各項配置維護bean間關(guān)系晕城。
- bean介紹:類型豐富泞坦,可以是action/serlvert/domain/service/dao等。
- 表現(xiàn)方式:
- IoC(Inverse of Control) 和 DI (Dependency Injection):反轉(zhuǎn)控制與依賴注入砖顷。
- 說明:Spring容器獲取了創(chuàng)建對象贰锁,裝載對象的權(quán)利,使得程序不再維護對象的實例化滤蝠,同時applicationContext.xml(名字可以變)間的配置實現(xiàn)了數(shù)據(jù)的注入豌熄,程序間關(guān)系的注入(實現(xiàn)方式:java反射機制)。
- 加快開發(fā)速度:編程粒度增大物咳。
Spring的運用范圍
spring可包含這四層锣险,bean間配置可以體現(xiàn)層與層間的關(guān)聯(lián)關(guān)系
入門案例
- 引包:commons-logging.jar、spring.jar(該包為集成包)
- 引進路徑:build path
- 編寫代碼:
HelloService.java
package com.service;
public class HelloService {
private String name;
private BybService bybService;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BybService getBybService() {
return bybService;
}
public void setBybService(BybService bybService) {
this.bybService = bybService;
}
public void sayhello(){
System.out.print("hello"+name);
bybService.sayBybe();
}
}
BybService.java
package com.service;
public class BybService {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void sayBybe(){
System.out.print("bybe"+name);
}
}
- 配置applicationContext.xml:
位置一般放在src文件夾下
<?xml version="1.0" encoding="UTF-8"?>
<!--引入schema規(guī)范文件-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!--配置bean,id為該HelloService的別名芯肤,與其對應(yīng)巷折;class為類路徑-->
<bean id="helloService" class="com.service.HelloService">
<!--數(shù)據(jù)注入,對該屬性賦值-->
<property name="name">
<value>小明</value>
</property>
<!--關(guān)系注入崖咨,形成依賴锻拘,前者bybService為HelloService.java屬性值,后者bybService為 該文件配置BybService的id-->
<property name="bybService" ref="bybService">
</property>
</bean>
<bean id="bybService" class="com.service.BybService">
<property name="name" value="小明"></property>
</bean>
</beans>
- 測試代碼:
package com.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
//創(chuàng)建容器對象击蹲,該句執(zhí)行后署拟,加載容器中所有bean(當(dāng)然僅對上述配置的bean),預(yù)先加載歌豺,不管你是否會使用推穷。
//ClassPathXmlApplicationContext("applicationContext.xml");指明配置文件的名稱與路徑,請自行更改調(diào)整类咧。
HelloService us=(HelloService)ac.getBean("helloService");
BybService by=(BybService)ac.getBean("bybService");
//獲取已加載的對應(yīng)類對象馒铃,使用函數(shù)getBean(id),同時注意類型轉(zhuǎn)換轮听。
us.sayhello();
by.sayBybe();
//調(diào)用對象函數(shù)骗露。
}
}