结构目录如下:

其中:

dao层和entity层都属于hibernate的的管辖。
entity层里面装的是每张表对应的持久化类。
dao层里面装的是“底层操作数据库的行为”,仅仅只是单纯的增删查改等。(创建步骤是:先定义dao接口,再定义该dao接口各个impl实现类)。

service层属于spring的管辖。
service层里面装的是“具体的业务逻辑操作”,
该层操作的是“dao接口”。而spring负责将具体的“dao实现类”注入到该层。
该层通过dao层提供的数据进行具体的业务逻辑编写。

Test是测试类,beans.xml是bean的配置文件。

User.java

  1. //持久化类,这个类对应的是数据库里的user表,该表有name和age这两个字段。
  2. public class User {
  3. private String name;
  4. private int age;
  5.  
  6. public void setName(String name) {
  7. this.name = name;
  8. }
  9.  
  10. public void setAge(int age) {
  11. this.age = age;
  12. }
  13.  
  14. public int getAge() {
  15. return age;
  16. }
  17.  
  18. public String getName() {
  19. return name;
  20. }
  21. }

UserDao.java

  1. import com.springdemo.entity.User;
  2.  
  3. /**
  4. * Created by CLY on 2016/12/26.
  5. */
  6. public interface UserDao {
  7. //创建了个demo接口方法,供实体类实现。这个方法本来的作用是:“获取user对象,将用户信息存入数据库”
  8. public void save(User user);
  9. }

UserDaoImpl.java

  1. import com.springdemo.dao.UserDao;
  2. import com.springdemo.entity.User;
  3.  
  4. /**
  5. * Created by CLY on 2016/12/26.
  6. */
  7. public class UserDaoImpl implements UserDao {
  8.  
  9. //实现UerDao接口的save方法
  10. public void save(User user) {
  11. //本来是要将作为参数传入的“user持久化类”的对象存入数据库的,但此处主要是突显依赖注入,所以就忽略具体的操作了。
  12. System.out.print("用户名:"+user.getName()+" 年龄:"+user.getAge());
  13. }
  14. }

UserService.java

  1. import com.springdemo.entity.User;
  2.  
  3. /**
  4. * Created by CLY on 2016/12/26.
  5. */
  6. public interface UserService {
  7.  
  8. //mvc框架中的“控制器”会将User对象传给service层的这个方法。(因为是测试,就忽略控制器了)
  9. // 该方法负责对user对象进行一些业务逻辑的处理,之后传给dao层。
  10. public void add(User user);
  11. }

UserServiceImpl.java

  1. import com.springdemo.dao.UserDao;
  2. import com.springdemo.entity.User;
  3. import com.springdemo.service.UserService;
  4.  
  5. /**
  6. * Created by CLY on 2016/12/26.
  7. */
  8. public class UserServiceImpl implements UserService{
  9. private UserDao userDao;//定义dao层的“接口”
  10.  
  11. public void add(User user) {
  12. /*
  13. * 将控制器传过来的user对象传给dao层。
  14. * 此处体现的是面向接口编程。好处就是:当该接口的具体实现类改变时,并不需要修改此service中的代码,因为service操作的是接口的方法*/
  15. userDao.save(user);
  16. }
  17.  
  18. public UserDao getUserDao() {
  19. return userDao;
  20. }
  21.  
  22. /*
  23. * 为userDao的具体实现类对象的注入做准备。
  24. * 因为此处调用的是接口方法,我们需要指明具体调用该接口的哪一个实现类。
  25. * 此时dao实现类是“通过IoC容器注入进来的”,而非service实现类调用得到的*/
  26. public void setUserDao(UserDao userDao) {
  27. this.userDao = userDao;
  28. }
  29. }

beans.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. xmlns:util="http://www.springframework.org/schema/util"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/util
  9. http://www.springframework.org/schema/util/spring-util-4.0.xsd">
  10.  
  11. <!--注册一个UserDaoImpl对象,实例名为“u”-->
  12. <bean id="u" class="com.springdemo.dao.impl.UserDaoImpl"></bean>
  13.  
  14. <!--注册一个UserServiceImpl对象,实例名为“userService”-->
  15. <bean id="userService" class="com.springdemo.service.impl.UserServiceImpl">
  16. <!--将UserDaoImpl类型的“u”对象,注入到userService实例的userDao属性中去-->
  17. <property name="userDao">
  18. <ref bean="u"/>
  19. </property>
  20. </bean>
  21. </beans>

Test.java

  1. import com.springdemo.entity.User;
  2. import com.springdemo.service.impl.UserServiceImpl;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. /**
  7. * Created by CLY on 2016/12/26.
  8. */
  9. public class Test {
  10. //测试UserServiceTest的add方法
  11. public static void main(String args[]){
  12. //创建spring容器,将beans的配置文件装载进容器。
  13. ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  14. //通过容器的getBean()方法,获取具体的bean实例(参数是bean的id名)。
  15. UserServiceImpl service = (UserServiceImpl)ctx.getBean("userService");
  16.  
  17. User u =new User();
  18. u.setName("小明");
  19. u.setAge(18);
  20.  
  21. service.add(u);
  22. }
  23. }

最后运行结果:

Spring4 实例的更多相关文章

  1. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  2. 实例演示如何在spring4.2.2中集成hibernate5.0.2并创建sessionFactory

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/49388209 文章作者:苏生米沿 本文目的:使用spring4.2.2集成hibern ...

  3. Spring4 MVC+Hibernate4 Many-to-many连接表+MySQL+Maven实例

    这篇文章显示 Hibernate 的多对多实例,在 Spring MVC CRUD Web应用程序中连接表.我们将同时讨论管理多对多关系在视图和后端. 我们将使用应用程序的Web界面创建,更新,删除和 ...

  4. Spring4 MVC REST服务使用@RestController实例

    在这篇文章中,我们将通过开发使用 Spring4 @RestController 注解来开发基于Spring MVC4的REST风格的JSON服务.我们将扩展这个例子通过简单的注释与JAXB标注域类支 ...

  5. Spring4 MVC ContentNegotiatingViewResolver多种输出格式实例

    本文演示支持多种输出格式,这里 Spring4 MVC应用程序使用了 Spring ContentNegotiatingViewResolver .我们将生成应用程序输出XML,JSON,PDF,XL ...

  6. Spring4 + Quartz-2.2.0集成实例

    Spring3.0不支持Quartz2.0,因为org.quartz.CronTrigger在2.0从class变成了一个interface造成IncompatibleClassChangeError ...

  7. Spring4 MVC HelloWorld 注解和JavaConfig实例

    在这一节中,我们以 Spring4 MVC HelloWorld 注释/JavaConfig为示例,一步一步以简单的方式学习Spring4 MVC 的注解,项目设置,代码,部署和运行. 在先前的 Sp ...

  8. Spring4 MVC+ AngularJS CRUD使用$http实例

    这篇文章显示了使用Spring MVC4整合AngularJS.我们将创建一个使用后端和AngularJS作为前端的纯JSP封装Spring REST API一个CRUD应用程序, 使用 $http ...

  9. Spring4 MVC文件下载实例

    这篇文章将向您展示如何使用Spring MVC4执行文件下载,我们将看到应用程序从文件系统内部以及外部文件下载文件. 本教程的主要亮点: 下载文件是相当简单的,涉及以下步骤. 创建一个InputStr ...

随机推荐

  1. 解决NetBeans运行web项目时出现的“未能正确设置java DB”问题

    1.在NetBeans导航器中,点击"服务"选项卡: 2.展开"数据库"菜单: 3.在"Java DB"上右键 –> 选择" ...

  2. ios获取设备信息总结

    1.获取设备的信息 UIDevice *device = [[UIDevice alloc] int]; NSString *name = device.name;       //获取设备所有者的名 ...

  3. Lintcode 85. 在二叉查找树中插入节点

    -------------------------------------------- AC代码: /** * Definition of TreeNode: * public class Tree ...

  4. tp框架之留言板练习

    登陆控制器与显示页面 <?php namespace Admin\Controller; use Think\Controller; class DengController extends C ...

  5. TextView属性android:ellipsize="marquee"不生效的解决办法

    最近自己在写自己的第一个app,过程中遇到了这个问题,查了不少帖子,经过尝试发现,这种问题一般分为两类: 1. TextView的Text值赋值后不更改,很多帖子上说如下写法就可以生效: <Te ...

  6. python的Template

    Template模块,可以用来制作web页面的模板,非常的方便. Template属于string中的一个类,所以要使用的话要在头部引入: from string import Template 模板 ...

  7. css雪碧图生成工具4.1更新

    V4.0介绍地址:http://www.cnblogs.com/wang4517/p/4493917.html 此次更新主要针对已有BUG的修复,用户可在客户端上直接看到更新信息,自己去下载 已修复问 ...

  8. 学习微信小程序之css10外边距

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 关于淘宝店铺装修弹出层popup的记录

    小龙最近做了一下下淘宝的店铺装修,里面封装的widget深不见底,刚刚整明白popup,也就是弹出层的使用方法,大神勿喷: <div class="area001">触 ...

  10. IDA的脚本IDC的一个简单使用

    目的:主要是想学习一下IDA的IDC的脚本的使用.这里做了一个小的测试. 这里使用的是VS2015Community来生成文件的. 一.编写测试程序: 这里先生成我们的目标数据. 然后编写测试程序.得 ...