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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 较新颖的智能优化算法[通俗易懂]

    较新颖的智能优化算法[通俗易懂]32个较新颖的智能优化算法序号方法参考文献年份1人群搜索算法Dai,C.,Y.Zhu,andW.Chen.Seekeroptimizationalgorithm.inInternationalConferenceonComputationalandInformationScience.2006.Springer.20062人工蜂群算法Karaboga,D.andB.J.J.o.g.o.Basturk,Apowerfu

    2022年5月10日
    39
  • Nginx简单配置,部分来源于网络

    Nginx简单配置,部分来源于网络

    2021年10月19日
    43
  • pycharm激活成功教程的两种方式

    pycharm激活成功教程的两种方式Pycharm激活成功教程方式1: 0x1,安装0x2,调整时间到2038年。0x3,申请30天试用0x4,退出pycharm0x5,时间调整回来。Pycharm激活成功教程方式2:安装完软件后,启动,在要求输入注册码的界面(菜单栏⇒help⇒register)选择“Licenseserver”输入“http:/

    2022年8月29日
    0
  • SQL Server中QUOTENAME函数的使用

    SQL Server中QUOTENAME函数的使用–函数QUOTENAME–功能:返回带有分隔符的Unicode 字符串,分隔符的加入可使输入的字符串成为有效的Microsoft SQL Server 2005 分隔标识符。–语法QUOTENAME ( character_string [ , quote_character ] ) –举例说明:–比如你有一个表,名字叫index–你有一个动

    2022年7月25日
    7
  • js如何生成二维码_jquery 生成二维码无法识别

    js如何生成二维码_jquery 生成二维码无法识别前言最近根据自己的需求寻找到了一款简单易用的生成二维码插件,特此分享一、使用步骤1.下载插件npmiqrcodejs2或yarnaddqrcodejs2二、vue中使用1.vue2<template><div><divref=”qrcodeDom”></div><button@click=”show”>展示二维码</button><bu.

    2022年10月17日
    0
  • Java对象转换Map(工具类)[通俗易懂]

    Java对象转换Map(工具类)[通俗易懂]/***@Description//TODOMap工具类*@Date2020/5/79:54*@Authorhuangwb**/publicclassMapUtils{/***@returnvoid*@Authorhuangwb*@Description//TODO对象转换成map*…

    2022年6月8日
    38

发表回复

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

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