zoukankan      html  css  js  c++  java
  • spring入门篇5 --- IOC思想,使用注解实现小项目

    接下来用之前写的小项目来实现注解

    首先看一下操控的,@Data注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法,代码比以前简洁很多,@Data属于Lombok包,记得引入 

    package com.yang.bean;
    
    import lombok.Data;
    
    @Data  // 可以帮助我们创建无参构造函数
    public class User {
        private int id;
        private String name;
        private String sex;
    
        public User(int id, String name, String sex) {
            this.id = id;
            this.name = name;
            this.sex = sex;
        }
    }

    dao层,接下来我们看一下dao层,标志符使用的是Repository进行通知spring扫描,这个只是spring的一个规定,效果与component一样

    package com.yang.dao;
    
    import com.yang.bean.User;
    
    import java.util.List;
    
    public interface UserDao {
        List<User> getUsers();
    }
    
    package com.yang.dao.Impl;
    
    import com.yang.bean.User;
    import com.yang.dao.UserDao;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
    
    import javax.annotation.Resource;
    import java.util.ArrayList;
    import java.util.List;
    
    @Repository  // Dao层,功能与component一样
    public class UserDaoImpl implements UserDao {
    
        @Autowired
        private DataSources dataSources;
    
        public List<User> getUsers() {
            System.out.println("模拟查询数据库" + dataSources);
            User user1 = new User(1, "ning", "male");
            User user2 = new User(2, "ming", "male");
            User user3 = new User(3, "hong", "female");
            List<User> list = new ArrayList<User>();
            list.add(user1);
            list.add(user2);
            list.add(user3);
            return list;
        }
    }

    service层,标志位使用的是@Service

    package com.yang.service;
    
    import com.yang.bean.User;
    
    import java.util.List;
    
    public interface UserService {
        List<User> getUsers();
    }
    
    
    package com.yang.service.Impl;
    
    import com.yang.bean.User;
    import com.yang.dao.UserDao;
    import com.yang.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class UserServiceImpl implements UserService {
    
        @Autowired
        UserDao userDao;
    
        public List<User> getUsers() {
            return userDao.getUsers();
        }
    }

    controller层,标志位使用的是@COntroller

    package com.yang.controller;
    
    import com.yang.bean.User;
    import com.yang.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    
    import java.util.List;
    
    @Controller  // controller层的通知spring来进行扫描的,功能与component一样
    public class UserController {
    
        @Autowired// 自动加载相关对象
        UserService uc;
    
        public void getUsers() {
            List<User> userList = uc.getUsers();
            for (User user : userList) {
                System.out.println(user);
            }
        }
    }

    测试层,我们看一下ceshiceng,它使用ContextConfiguration注解来代替我们之前新建的一个context对象,内部直接使用@Autowired进行注入对象,比以前写的简洁了

    package com.yang.test;
    
    import com.yang.controller.UserController;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)   // 这个就是使用spring+Junit框架
    @ContextConfiguration("classpath:applicationContext.xml") // 加载spring的配置文件
    public class TestUser {
        @Autowired
        UserController uc;
    
        @Test
        public void test1() {
            uc.getUsers();
        }
    }

    这个就是IOC思想,就是对象的管理交给spring,我们只负责使用即可。

  • 相关阅读:
    关于冲动 CQ
    关于在虚拟机上使用boost库 CQ
    新项目奖金分配方案 CQ
    关于桌子 CQ
    linux 添加本地yum源
    linux samba 服务器 简单配置
    linux 修改密码
    linux ntp 服务器和用户端
    linux 修改ip 地址
    Union 和 Union All 的区别
  • 原文地址:https://www.cnblogs.com/yangshixiong/p/12192014.html
Copyright © 2011-2022 走看看