Spring的基本业务流程与类的多实现

Spring的基本业务流程与类的多实现Spring的基本业务流程与类的多实现

大家好,又见面了,我是你们的朋友全栈君。

目录结构:
在这里插入图片描述applicationContext.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:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">

    <context:component-scan base-package="com.xbj"/>
</beans>

UserCoutroller.java

package com.xbj.controller;

import com.xbj.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;

/** * @Author:晓宇码匠 * @Date:2019/6/15 0015 */
@Controller
public class UserCoutroller { 
   
    /* * Autowired:注入的是接口的实现类 * 如果没有实现类 无法注入 * 如果有多个实现类 也无法自动注入,需要通过Qualifier 指定ID * ID的默认值是 类名的首字母小写 * */
    @Autowired
    @Qualifier("userServiceImpl")
    private UserService userService;

    public String addUser() { 
   
        userService.addUser();
        return "SUCCESS";
    }
}

UserDaoImpl.java

package com.xbj.dao.impl;
import com.xbj.dao.UserDao;
import org.springframework.stereotype.Repository;
/** * @Author:晓宇码匠 * @Date:2019/6/15 0015 */
@Repository
public class UserDaoImpl implements UserDao { 
   

    public void addUser() { 
   
        System.out.println("addUser");
    }
}

UserDao.java

package com.xbj.dao;
/** * @Author:晓宇码匠 * @Date:2019/6/15 0015 */
public interface UserDao { 
   
     void addUser();
}

UserServiceImpl.java

package com.xbj.service.impl;

import com.xbj.dao.UserDao;
import com.xbj.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/** * @Author:晓宇码匠 * @Date:2019/6/15 0015 * * @Scope如果是设为多例,在方法结束时,不会进行销毁,而是变成休眠态 * 反之,单例就会执行销毁方法 */
@Service
@Scope(value = "prototype")//将实现类设置成多例的 、 不设默认是单例的singleton
public class UserServiceImpl implements UserService { 
   

    @Autowired
    private UserDao userDao;

    public void addUser() { 
   
        userDao.addUser();
    }

    @PostConstruct
    public void init(){ 
   
        //初始化
        System.out.println("初始化");
    }
    @PreDestroy
    public void dest(){ 
   
        //销毁
        System.out.println("销毁");
    }
}

UserServiceImpl2.java

package com.xbj.service.impl;

        import com.xbj.dao.UserDao;
        import com.xbj.service.UserService;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.context.annotation.Scope;
        import org.springframework.stereotype.Service;

        import javax.annotation.PostConstruct;
        import javax.annotation.PreDestroy;

/** * @Author:晓宇码匠 * @Date:2019/6/15 0015 */
@Service
@Scope(value = "prototype")//将实现类设置成多例的 、 不设默认是单例的singleton
public class UserServiceImpl2 implements UserService { 
   

    @Autowired
    private UserDao userDao;

    public void addUser() { 
   
        userDao.addUser();
    }

}

UserService.java

package com.xbj.service;

/** * @Author:晓宇码匠 * @Date:2019/6/15 0015 */
public interface UserService { 
   
    void addUser();
}

test.java

import com.xbj.controller.UserCoutroller;
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;

/** * @Author:晓宇码匠 * @Date:2019/6/15 0015 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { 
   "classpath:applicationContext.xml"})
public class test { 
   
    @Autowired
    private  UserCoutroller userCoutroller;
    @Test
    public void t1(){ 
   
        System.out.println(userCoutroller.addUser());
    }
}

单例,控制台输出:

初始化
addUser
SUCCESS
销毁

多例,控制台输出:

初始化
addUser
SUCCESS
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106640.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 1156针cpu排行_755针最强CPU

    1156针cpu排行_755针最强CPUIntel酷睿i7875K¥2330CPU主频:2930MHz智能加速:3600MHz插槽类型:LGA1156制作工艺:45纳米二级缓存:4×256KB三级缓存:8M核心数量:四核心核心类型:Lynnfield线程数:八线程总线类型:DMI总线热设计功耗(TDP):95W内核电压:0.65-1.40V内存控制器:双通道DDR3-1066/1333最大16G64位处理器。…

    2022年9月20日
  • VMwware15激活码【中文破解版】2022.02.10

    (VMwware15激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4KDD…

    2022年4月1日
  • tar 打包隐藏文件[通俗易懂]

    tar 打包隐藏文件[通俗易懂]前言:先说一下遇到的场景:前段时间在配合做DevOps,组内有块代码是php的,需要用tar命令打包归档上传到nexus库,后来发现解压出来的包居然缺失了隐藏文件(配置文件),查了一下资料解决了,这里记录一下。1.tar命令常规用法-c 创建新的档案文件-C 指定到要解压到的目录。注意:该目录必须存在-f 指定打包的文件名。在f之后要立即接打包文件名!不能再加参数!-x 解压-O 将文件解压到标准输出-p 使用原文件的原来属性-P 创建归档文件,使用绝对路径-t 列出档

    2022年5月31日
  • 模糊神经网络FNN「建议收藏」

    模糊神经网络FNN「建议收藏」分别对调速,调压,综合系统加入FNN控制器,使PID的输出达到最小值。其中关于FNN的理论部分,由于您已经以供了较多的文献资料,这里就不再进行叙述,这里主要说明一下最后的仿真效果和S函数的大致设计流程。这里仅对调速模型进行设计说明。为了对比加入FNN控制器后的性能变化,我们同时要对有FNN控制器的模型以及没有FNN控制器的模型进行仿真,仿真结果如下所示:非FNN控制器的结构:其仿真结果如下所示:FNN控制器的结构:其仿真…

    2022年10月23日
  • Pycharm连接mysql数据库报错1130,1054「建议收藏」

    Pycharm连接mysql数据库报错1130,1054「建议收藏」Pycharm连接mysql报错1130,1054

    2022年8月27日
  • 小米bl未解锁变砖了如何刷机_如何正确刷机

    小米bl未解锁变砖了如何刷机_如何正确刷机1.一部可以解锁bl的手机选择一部合适可以解锁的手机,以小米为例(我有的),小米需要绑定账号在新手机15天。去小米官方申请(https://www.miui.com/unlock/index.html),登陆账号,下载解锁工具,在工具里面登录小米账号,数据线连接进入bl模式的手机.(解锁会清空手机数据).解锁后手机仍保修登录小米账号,下载解锁工具2.选择合适的twrp下载twrp后,电脑使用…

    2022年5月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号