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


相关推荐

  • camunda「建议收藏」

    camunda「建议收藏」CamundaBPM用途:流程管理、流程解决方案支持语言:java,nodejs入门指导:1.https://docs.camunda.org/get-started/quick-sta

    2022年8月1日
    0
  • 一行代码教你伪装黑客

    一行代码教你伪装黑客在电脑上单击右键新建一个记事本右键笔记本打开编辑输入如下代码并保存starthttps://pranx.com/hacker/笔记本后缀改成.bat完成后我们双击点击,就会出现如下图的一个流动界面了,是不是很酷炫,其实也就是一个普通网页,用来给外行人装装逼,哈哈哈哈…

    2022年7月15日
    203
  • github 京东自动签到_手机京东签到在哪里

    github 京东自动签到_手机京东签到在哪里京东自动签到(利用github实现)+Cooki失效解决办法京东自动签到https://ruicky.me/2020/06/05/jd-sign/参考上面这篇文章,就不转载过来了,原文已经写的很详细了。但自己实践时Sevrer酱提示Cookie失效,同时也看到此文下面有很多跟我一样情况的,所以有提示Cookie失效的请用下面链接的方法获取Cookie,记得复制出来的Cookie值要把所有空格删除。获取京东Cookiehttps://www.plus888.com/21061.html…

    2022年9月2日
    3
  • Origin绘制上面和右边边框

    Origin绘制上面和右边边框如下面两个图,是绘制前后的对比图,可以发现多了上面和右边的边框,且边框无刻度。操作流程1。双击坐标轴。2。双击top和LineandTicks3。做如下操作4。右侧同理最终得到我们需要的图形。

    2022年5月20日
    406
  • tomcat日志乱码问题、页面乱码问题等

    tomcat日志乱码问题、页面乱码问题等一、默认解决方法无论Google还是百度,多数解决方法是server.xml设置URIEncoding=“UTF-8”。<Connectorport=”8080″protocol=”HTTP/1.1″connectionTimeout=”20000″redirectPort=”8443″URIEncoding=”UTF-8″/>二、接口乱码在catalina.bat头部增加-Dfile.encoding=UTF-8/bin/catalina.bat

    2022年9月26日
    0
  • 列举出linux文件和目录常用的命令_shell进入目录执行文件

    列举出linux文件和目录常用的命令_shell进入目录执行文件目录命令总览ls(英文全拼:listfiles):列出目录及文件名cd(英文全拼:changedirectory):切换目录pwd(英文全拼:printworkdirectory):显

    2022年7月31日
    3

发表回复

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

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