结构目录如下:

其中:

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

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

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

User.java

//持久化类,这个类对应的是数据库里的user表,该表有name和age这两个字段。
public class User {
private String name;
private int age; public void setName(String name) {
this.name = name;
} public void setAge(int age) {
this.age = age;
} public int getAge() {
return age;
} public String getName() {
return name;
}
}

UserDao.java

import com.springdemo.entity.User;

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

UserDaoImpl.java

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

UserService.java

import com.springdemo.entity.User;

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

UserServiceImpl.java

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

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!--注册一个UserDaoImpl对象,实例名为“u”-->
<bean id="u" class="com.springdemo.dao.impl.UserDaoImpl"></bean> <!--注册一个UserServiceImpl对象,实例名为“userService”-->
<bean id="userService" class="com.springdemo.service.impl.UserServiceImpl">
<!--将UserDaoImpl类型的“u”对象,注入到userService实例的userDao属性中去-->
<property name="userDao">
<ref bean="u"/>
</property>
</bean>
</beans>

Test.java

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

最后运行结果:

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. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  2. 《ASP.NET MVC高级编程(4版)》读书笔记(5)表单和HTML辅助方法

    5.1 表单使用 5.1.1 action 和 method 特性 <form action="/Home/Index">     <input name=&qu ...

  3. centos 6.6 系统中配置sendmail和dovecot

    网上介绍sendmail的文章千百种,很少有跟着做下来一次成功的.多少都有些说的不准确的地方. 我给大家共享一下我经过实验环境测试,完全可行的方法. 1.软件准备 操作系统:centos6.6我选择c ...

  4. 【iOS】UITabView/UICollectionView 全选问题

    UITabView/UICollectionView 全选问题 SkySeraph July. 30th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySera ...

  5. VadRoot枚举进程模块在Windows7下的完整实现

      原理小伟的小伟在http://bbs.pediy.com/showthread.php?t=66886说的挺清楚了,Windows7下有一些变化,使用NtQueryVirtualMemory来枚举 ...

  6. VS低版本打开高版本解决方案(如08打开10、12、13版本vs编译的项目)

    一.vs2005打开vs2008编译的项目:1.用记事本打开sln文件,将: Microsoft Visual Studio Solution File, Format Version 10.00 # ...

  7. [spring源码学习]九、IOC源码-applicationEventMulticaster事件广播

    一.代码实例 回到第IOC的第七章context部分,我们看源码分析部分,可以看到在spring的bean加载之后的第二个重要的bean为applicationEventMulticaster,从字面 ...

  8. js中的日期控件My97 DatePicker---那些打酱油的日子

    使用WdatePicker插件来渲染日期类型的页面. 以下代码用到的属性有: isShowClear是否显示清空按钮 skin皮肤的样式 readOnly是否只读 maxDate:最大的选择时间 &l ...

  9. 解决svn uuid变更问题

    简介: 今天在snv根目录下重新定位上传的url,更改后出现如下错误 .可以看到,原来Repository创建者的uuid是前者,而现在我操作的是后者的uuid.因此,目前的操作办法是 使用相关命令更 ...

  10. SOAPUI使用教程-MockService脚本概述

    虽然静态MockOperation和MockResponse模型可以给你一定的灵活性,更多的动态行为添加到您的服务让您更模拟复杂的服务功能是很有用的.例如,你可能想: 从请求到响应传输值,修改它们的值 ...