spring 入门实例
国际惯例,从一个简单的例子入门,轻松了解依赖注入。
拿之前提到的场景:
假设我们开发了一套管理系统,每收到一笔订单后,系统调用notifyservice.sendMessage给客户发送订单成功邮件。有天老板(也有可能是产品)突然要改个需求:将原来的给客户发送邮件功能改为发手机短信。你无需改动任何代码,只是在配置中将“发送器”配置成“手机发送器”,就能完成工作。
一、创建工程
这里我们选择Dynamic Web Project(动态web项目),当然也可以选择普通的Java Project。

在创建的过程中,我们给source folder增加一个config目录用于放置配置文件。在开发中,要养成归类的习惯。
二、添加Spring及相关组件
按照《02、从官网获取Spring》下载组件后,将目录lib下的jar包拷入工程。
因为spring依赖log4j.jar、commons-logging.jar两个组件,所以需要将这两个组件相关的jar(共4个)拷入工程。

三、写业务逻辑
代码结构如下:

接口 NotifyService.java
public interface NotifyService { void sendMessage(String message); }
实现 NotifyServiceByCellPhoneImpl.java
1 public class NotifyServiceByCellPhoneImpl implements NotifyService{ 2 @Override 3 public void sendMessage(String message) { 4 System.out.println("发送手机短信:"+message); 5 } 6 }
实现 NotifyServiceByWeixinImpl.java
1 public class NotifyServiceByWeixinImpl implements NotifyService{ 2 @Override 3 public void sendMessage(String message) { 4 System.out.println("发送微信短信:"+message); 5 } 6 }
订单类 Order.java
1 public class Order { 2 private NotifyService notifyservice; 3 /*notifyservice不是在内部new()出来的, 4 而是通过指定方法传进来的,也就是我们说的注入。这里是setter注入*/ 5 public void setNotifyservice(NotifyService notifyservice) { 6 this.notifyservice = notifyservice; 7 } 8 public Order(){} 9 public Order(NotifyService notifyservice) { 10 this.notifyservice = notifyservice; 11 } 12 /*订单支付完成后,系统通知老板*/ 13 public void PaySuccess(){ 14 notifyservice.sendMessage("客户张铁蛋完成订单2017079657付款,共人民币:97.5元"); 15 } 16 }
四、配置xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 7 <bean id="notify" class="twm.spring.start.NotifyServiceByWeixinImpl" /> 8 <bean id="order" class="twm.spring.start.Order" > 9 <!-- 配置注入NotifyServiceByCellPhoneImpl的实例化对象 --> 10 <property name="notifyservice" ref="notify"/> 11 </bean> 12 </beans>
五、调用:
Test.java文件:
1 ublic class Test { 2 public static void main(String[] args) throws Exception { 3 ApplicationContext ctx = new ClassPathXmlApplicationContext( 4 "beans.xml"); 5 Order order=ctx.getBean("order",Order.class); 6 order.PaySuccess(); 7 } 8 }
输出:
发送微信短信:客户张铁蛋完成订单2017079657付款,共人民币:97.5元
老板如果要求我们用手机短信发送通知,我们就到配置文件beans.xml中进行修改:
1 <bean id="notify" class="twm.spring.start.NotifyServiceByWeixinImpl" />
修改为
1 <bean id="notify" class="twm.spring.start.NotifyServiceByCellPhoneImpl" />
再次运行输出:
发送手机短信:客户张铁蛋完成订单2017079657付款,共人民币:97.5元

浙公网安备 33010602011771号