亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot中的main方法注入service

 更新時(shí)間:2021年06月04日 17:19:06   作者:家里有個(gè)妖精  
這篇文章主要介紹了SpringBoot中的main方法注入service操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、SpringBoot中的main方法注入service

在springboot中使用main方法常規(guī)無(wú)法注入service,因?yàn)橐院笠部赡軙?huì)有這種情況,所以采取工具類的方式進(jìn)行,該工具類為固定寫法,直接復(fù)制就行

@Component
public class SpringContextUtil implements ApplicationContextAware {
    private static ApplicationContext applicationContext = null;
 
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (SpringContextUtil.applicationContext == null) {
            SpringContextUtil.applicationContext = applicationContext;
        }
    }
 
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
 
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }
 
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }
 
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
 
}

然后在需要注入的地方,創(chuàng)建靜態(tài)service

 private static Service service;

然后在需要使用的main方法中:

  public static void main(String[] args) {
        SpringApplication.run(**Application.class,args);
        ApplicationContext applicationContext = SpringContextUtil.getApplicationContext();
        service = applicationContext.getBean(**Service.class);
    }

二、springboot 通過(guò)main方法調(diào)用service或dao

大多數(shù)情況下,我們使用springboot是創(chuàng)建一個(gè)web項(xiàng)目,然后通過(guò)接口訪問(wèn),但是也有特殊情況,比如線上跑著的web項(xiàng)目,有一些特殊的數(shù)據(jù),需要經(jīng)過(guò)計(jì)算導(dǎo)入到數(shù)據(jù)庫(kù),這個(gè)時(shí)候,我們可能需要原來(lái)的web項(xiàng)目中的一些service,dao才輔助操作,但是又不能在服務(wù)端新開(kāi)接口。

我們通過(guò)springboot的main方法執(zhí)行這些操作。

此時(shí),service和到需要通過(guò)上下文獲得。

創(chuàng)建類,并復(fù)制下面代碼

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
 * 普通類調(diào)用Spring bean對(duì)象:
 * 注意:此類需要放到App.java同包或者子包下才能被掃描,否則失效。
 */
@Component
public class SpringUtil implements ApplicationContextAware{
    private static ApplicationContext applicationContext = null;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if(SpringUtil.applicationContext == null){
            SpringUtil.applicationContext  = applicationContext;
        }
    }
    //獲取applicationContext
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
    //通過(guò)name獲取 Bean.
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }
    //通過(guò)class獲取Bean.
    public static <T> T getBean(Class<T> clazz){
        return getApplicationContext().getBean(clazz);
    }
    //通過(guò)name,以及Clazz返回指定的Bean
    public static <T> T getBean(String name,Class<T> clazz){
        return getApplicationContext().getBean(name, clazz);
    }
}

再創(chuàng)建TestApp方法,必須跟SpringUtilfa放到同一目錄下

package com.example.demo.test2;
import com.example.demo.controller.Aqjg_thePeriodController;
import com.example.demo.mapper.AppAqjgTaskMapper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import java.util.List;
import java.util.Map;
@SpringBootApplication
@MapperScan(basePackages = {"com.example.demo.mapper"})
public class TestApp {
    public static void main(String[] args) {
        SpringApplication.run(TestApp.class, args);
        ApplicationContext context = SpringUtil.getApplicationContext();
        Aqjg_thePeriodController aqjg_thePeriodController = new Aqjg_thePeriodController();
        AppAqjgTaskMapper appAqjgTaskMapper = context.getBean(AppAqjgTaskMapper.class); //你的dao或service
        List<Map<String,Object>> list = appAqjgTaskMapper.getTestSmsData();
        System.out.println("完成");
    }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 全面了解JAVA_BaseDAO數(shù)據(jù)處理類

    全面了解JAVA_BaseDAO數(shù)據(jù)處理類

    下面小編就為大家?guī)?lái)一篇全面了解JAVA_BaseDAO數(shù)據(jù)處理類。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • Java使用entrySet方法獲取Map集合中的元素

    Java使用entrySet方法獲取Map集合中的元素

    這篇文章主要為大家詳細(xì)介紹了Java使用entrySet方法獲取Map集合中的元素,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java使用POI導(dǎo)出大數(shù)據(jù)量Excel的方法

    Java使用POI導(dǎo)出大數(shù)據(jù)量Excel的方法

    今天需要寫一個(gè)導(dǎo)出的Excel的功能,但是發(fā)現(xiàn)當(dāng)數(shù)據(jù)量到3萬(wàn)條時(shí),列數(shù)在23列時(shí),內(nèi)存溢出,CPU使用100%,測(cè)試環(huán)境直接炸掉。小編給大家分享基于java使用POI導(dǎo)出大數(shù)據(jù)量Excel的方法,感興趣的朋友一起看看吧
    2019-11-11
  • 查找native方法的本地實(shí)現(xiàn)函數(shù)native_function詳解

    查找native方法的本地實(shí)現(xiàn)函數(shù)native_function詳解

    JDK開(kāi)放給用戶的源碼中隨處可見(jiàn)Native方法,被Native關(guān)鍵字聲明的方法說(shuō)明該方法不是以Java語(yǔ)言實(shí)現(xiàn)的,而是以本地語(yǔ)言實(shí)現(xiàn)的,Java可以直接拿來(lái)用。這里介紹下查找native方法的本地實(shí)現(xiàn)函數(shù)native_function,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • springboot配置mysql連接的實(shí)例代碼

    springboot配置mysql連接的實(shí)例代碼

    這篇文章主要介紹了springboot配置mysql連接的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • SpringMVC中解決@ResponseBody注解返回中文亂碼問(wèn)題

    SpringMVC中解決@ResponseBody注解返回中文亂碼問(wèn)題

    這篇文章主要介紹了SpringMVC中解決@ResponseBody注解返回中文亂碼問(wèn)題, 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法

    java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法

    這篇文章主要介紹了java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法,涉及java非遞歸算法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • java刪除文件和文件夾具體實(shí)現(xiàn)

    java刪除文件和文件夾具體實(shí)現(xiàn)

    這篇文章介紹了java刪除文件和文件夾具體實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-10-10
  • 詳細(xì)解釋什么是 Spring Bean(示例詳解)

    詳細(xì)解釋什么是 Spring Bean(示例詳解)

    Spring Bean 是由 Spring IoC 容器管理的對(duì)象實(shí)例,也是 Spring 框架的基本組件之一,本文通過(guò)示例代碼介紹Spring Bean 的作用域(Bean Scope)的相關(guān)使用方法,感興趣的朋友一起看看吧
    2023-09-09
  • Java多線程之線程同步

    Java多線程之線程同步

    這篇文章主要介紹了Java多線程之線程同步,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05

最新評(píng)論