Spring和MyBatis整合,报错cannot referenced from a static context

package com.graduation.project.dataCollector.service;

import com.graduation.project.dataCollector.service.pojo.User;
import com.graduation.project.dataCollector.service.dao.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;

import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })
public class SpringMyBatisTest {

    @Autowired
    private UserService userService;

    public static void main(String[] args) {
        User user = userService.getUserByUsername("abc");
        System.out.println(user.getUsername());
        System.out.println(user.getPassword());
    }
}

图片描述

问题补充

如果用单元测试可以运行

package com.graduation.project.dataCollector.service;

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;

import com.graduation.project.dataCollector.service.pojo.User;

import com.graduation.project.dataCollector.service.dao.UserService;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })
public class SpringMyBatisTest {

    @Autowired

    private UserService userService;

    @org.junit.Test

    public void test1() {

        User user = userService.getUserByUsername("abc");

        System.out.println(user.getUsername());

        System.out.println(user.getPassword());

    }
}

图片描述

但是放到main里面就报错了

package com.graduation.project.dataCollector.service;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import com.graduation.project.dataCollector.service.pojo.User;
import com.graduation.project.dataCollector.service.dao.UserService;

@ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })
public class SpringMyBatisTest {

    @Autowired

    private UserService userService;

    public static void main(String[] args) {
        new SpringMyBatisTest().test();
    }

    public void test() {
        User user = userService.getUserByUsername("abc");
    }

}

图片描述

问题补充

@ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })
public class SpringMyBatisTest {

    @Autowired
    private UserService userService;

    public static void main(String[] args) {
        SpringMyBatisTest main = new SpringMyBatisTest();
        main.test();
    }

    public void test() {

        User user = userService.getUserByUsername("abc");
    }

}

怎么初始化

阅读 4.4k
2 个回答

userService 是一个非静态变量(static)不能在静态方法(static method)中使用。

建议题主要补一下 Java 基础。

main 是个静态方法啊,怎么引用一个 非 static 的属性 UserService

public class SpringMyBatisTest {
    
    @Autowired
    private UserService userService;
    
    public staic void main(String ... args) {
        new SpringMyBatisTest().test();
    }
    
    public void test() {
        User user = userService.getUserByUsername("abc");
        ...
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题