<!--
component:把一个类放入到spring容器中,该类就是一个component
在base-package指定的包及子包下扫描所有的类
-->
<context:component-scan base-package="com.lee.spring012.scan.mvc.annotation"></context:component-scan>

IStuDAO.java

 package com.lee.spring012.scan.mvc.annotation;

 public interface IStuDAO {
public void saveStu();
}

IStuService.java

 package com.lee.spring012.scan.mvc.annotation;

 public interface IStuService {
public void saveStu();
}

PersonAction.java

 package com.lee.spring012.scan.mvc.annotation;

 import javax.annotation.Resource;

 import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller; @Controller
@Scope("prototype") // action为多例
public class PersonAction { @Resource
public IStuService stuServiceImpl; public void displaySave() {
System.out.println("mvc action: saving stu...");
stuServiceImpl.saveStu();
} }

StuDAOImpl.java

 package com.lee.spring012.scan.mvc.annotation;

 import org.springframework.stereotype.Repository;

 @Repository
public class StuDAOImpl implements IStuDAO { @Override
public void saveStu() {
System.out.println("mvc dao: saving stu...");
} }

StuServiceImpl.java

 package com.lee.spring012.scan.mvc.annotation;

 import javax.annotation.Resource;

 import org.springframework.stereotype.Service;

 @Service
public class StuServiceImpl implements IStuService { @Resource
public IStuDAO stuDAOImpl; @Override
public void saveStu() {
System.out.println("mvc service: saving stu...");
stuDAOImpl.saveStu();
} }

测试

 package com.lee.spring012.scan.mvc.annotation;

 import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class PersonTest { @Test
public void testPersonAction() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-scan-mvc.xml");
PersonAction person = (PersonAction)context.getBean("personAction");
person.displaySave();
} }

github地址:https://github.com/leechenxiang/maven-spring001-helloworld

最新文章

  1. 妙味课堂——HTML+CSS基础笔记
  2. Delphi Berlin 10.1 for iOS 成生 info.plist 顺序改变了
  3. win7 64位DCOM配置(关于导出excel 配置计算机组件服务)(转)
  4. windows系统服务编程代码示例分享
  5. DestroyWindow函数注意事项
  6. 使用System.Timers.Timer类实现程序定时执行
  7. 一张图告诉你为什么 Gmail 是最好的邮箱,以及大量私货
  8. iptables配置——NAT地址转换
  9. 自己动手写CPU之第九阶段(8)——MIPS32中的LL、SC指令说明
  10. jaspersoft 5.6.0 相关问题
  11. memcached的安装以及php两个扩展软件安装(memcache、memcached)
  12. 时间序列预测之--ARIMA模型
  13. 通过案例学习 Secret - 每天5分钟玩转 Docker 容器技术(110)
  14. [js高手之路]面向对象版本匀速运动框架
  15. angular4.0运行在微信端的坑坑洼洼
  16. Sql server 用T-sql读取本地数据文件dbf的数据文件
  17. Vue + webpack 项目实践
  18. 剑指offer例题分享--6
  19. Vue(基础七)_webpack(CommonsChunkPlug的使用)
  20. android studio Error:Execution failed for task &#39;:app:processDebugResources&#39;. &gt; com.android.ide.common.process.ProcessException: Failed to execute aapt

热门文章

  1. Your Customers Do Not Mean What They Say
  2. Proguard随笔
  3. iOS日期加减
  4. Java从零开始学四十一(反射简述二)
  5. jdbc第二天
  6. myeclipse debug不显示变量值解决的方法
  7. CAS 5.1.x 的搭建和使用(三)—— 通过官方示例来熟悉客户端搭建
  8. DRUPAL 关于 $user 用户权限
  9. HTML5 CANVAS 弹幕插件
  10. FFmpeg基础库编程开发学习笔记——视频常见格式