首页 技术 正文
技术 2022年11月6日
0 收藏 508 点赞 939 浏览 3250 个字

结构目录如下:

Spring4 实例

其中:

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 实例

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,084
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,559
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,408
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,181
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,818
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,901