SpringBoot 의 main 방법 주입 service

4872 단어 SpringBootmainservice
1.SpringBoot 의 main 방법 주입 service
springboot 에서 main 방법 을 사용 하면 일반적으로 service 를 주입 할 수 없습니다.앞으로 도 이러한 상황 이 발생 할 수 있 기 때문에 도구 류 의 방식 으로 진행 합 니 다.이 도구 류 는 고정 적 인 쓰기 로 직접 복사 하면 됩 니 다.

@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);
    }
 
}
그리고 주입 할 곳 에 정적 서 비 스 를 만 듭 니 다.

 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);
    }
2.springboot 는 main 방법 으로 service 또는 dao 를 호출 합 니 다.
대부분의 경우,우 리 는 springboot 을 사용 하여 웹 프로젝트 를 만 든 다음 에 인 터 페 이 스 를 통 해 접근 합 니 다.그러나 온라인 에서 달리 고 있 는 웹 프로젝트,일부 특수 한 데이터 가 있 습 니 다.계산 을 통 해 데이터 베 이 스 를 가 져 와 야 합 니 다.이 럴 때 우 리 는 원래 의 웹 프로젝트 중의 일부 service,dao 가 보조 적 으로 작 동 해 야 할 수도 있 습 니 다.하지만 서버 에 인 터 페 이 스 를 새로 열 수도 없다.
우 리 는 springboot 의 main 방법 을 통 해 이 조작 을 집행 합 니 다.
이 때 서비스 와 컨 텍스트 를 통 해 얻 을 수 있 습 니 다.
클래스 를 만 들 고 다음 코드 를 복사 합 니 다.

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
 *      Spring bean  :
 *   :      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;
    }
    //  name   Bean.
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }
    //  class  Bean.
    public static <T> T getBean(Class<T> clazz){
        return getApplicationContext().getBean(clazz);
    }
    //  name,  Clazz     Bean
    public static <T> T getBean(String name,Class<T> clazz){
        return getApplicationContext().getBean(name, clazz);
    }
}
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("  ");
    }
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기