记录一次SpringBoot Autowired为null的错误

在一个测试类中使用

@RunWith(SpringRunner.class)
@SpringBootTest
public class SuiSiteJob {

    @Autowired
    SiteService siteService;

    @Autowired
    SystemConfigService systemConfigService;
.......
}

由于之前没有用到框架 就直接写在了主函数中

public static void main(String[] args) throws Exception {
        SiteJob siteJob = new SiteJob();
        File newSite = new File("D:/ssrTask/newToolExcel.txt");
        List<String> readLines = FileUtils.readLines(newSite, "utf-8");
        for (String line : readLines) {
            try {
                //去掉标识
                if (line.startsWith("\uFEFF")) {//* string = string.substring(1); *//*
                    line = line.replace("\uFEFF", "");
                }
                //任务1
                siteJob.tempJob(line);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //任务2
        siteJob.downloadJob();
 }

后来因为需要使用框架 则移到了Junit Test中

@Test

public void.....{

/*代码同上*/}

启动了之后发现注入的在最开始可以正常注入 但是到我调用的地方就变为了null

经排查 发现我忘记改动代码  SiteJob s = new SiteJob();

在这一行 本被注入好各种属性与类的siteJob 被我重新new了一下 所以就出现了注入的类都为null

改为:删除new语句 函数直接调用  成功解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot拦截器是在请求处理过程中,对请求进行拦截和处理的一种机制。它可以在请求被处理之前或之后,对请求进行拦截和处理,用于实现一些通用的业务逻辑,例如:身份认证、权限控制、日志记录等。 下面是一个简单的Spring Boot拦截器示例,它可以在请求被处理之前,检查请求头中的Token是否合法,如果不合法则拦截请求并返回错误信息。 ```java @Component public class TokenInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader("Token"); if (token == null || token.isEmpty()) { response.setStatus(HttpStatus.UNAUTHORIZED.value()); response.getWriter().write("Token is invalid."); return false; } // TODO: 验证Token的合法性 return true; } } ``` 这段代码定义了一个名为TokenInterceptor的拦截器,它实现了HandlerInterceptor接口,并重写了其中的preHandle方法。在该方法中,我们首先从请求头中获取Token,如果Token为空或不存在,则直接拦截请求并返回错误信息。否则,我们可以在这里进行Token的验证,如果验证通过,则返回true,否则返回false。 在Spring Boot中,我们可以通过@Configuration注解来配置拦截器,例如: ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Autowired private TokenInterceptor tokenInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(tokenInterceptor).addPathPatterns("/**"); } } ``` 在这段代码中,我们通过@Configuration注解定义了一个名为WebMvcConfig的配置类,并实现了WebMvcConfigurer接口。在该类中,我们定义了一个名为tokenInterceptor的拦截器,并通过addInterceptors方法将其添加到InterceptorRegistry中。我们使用addPathPatterns方法来指定需要拦截的请求路径,这里我们使用了"/**"来表示拦截所有的请求路径。 以上就是一个简单的Spring Boot拦截器示例。使用拦截器可以方便地实现一些通用的业务逻辑,提高代码的复用性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值