• 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);
        }
    }

    最后运行结果:

  • 相关阅读:
    【36氪收录】观「招商银行」隐私计算布局的思考
    如何用cmake编译
    docker | Ubuntu16.04安装与卸载docker
    通过删除注册表重新获得软件试用期
    k8s | 重启Kubernetes Pod的几种方式
    2021年终总结(一)
    凡是过往、皆为序章20210917PPT分享
    多厂商容器平台开发系统性总结
    VS2022安装.NetFramework4.0目标包的方法
    C# Winform窗体继承过程中,TableLayoutPanel是不支持继承的
  • 原文地址:https://www.cnblogs.com/red-code/p/6223966.html
Copyright © 2020-2023  润新知