Spring Bean类可以包含静态方法吗?

时间:2017-12-08 01:46:50

标签: java spring spring-bean

我希望这不是一个问题的太多菜,我对Spring来说还是一个新手。 bean类可以包含静态方法吗?我最初的想法是否定的,因为静态方法是全局的,每个应用程序和共享的线程都有一个实例,但bean可能没有这样定义。

我试着搜索这个问题,但找不到明确的答案。

2 个答案:

答案 0 :(得分:1)

是,

spring bean也可能有静态方法。

使用构造函数@Autowired

@Component
public class Boo {

    private static Foo foo;

    @Autowired
    public Boo(Foo foo) {
        Boo.foo = foo;
    }

    public static void randomMethod() {
         foo.doStuff();
    }

    public static int getThree(){
         return 3;
    }
}

您也可以这样做: 使用@PostConstruct将值移交给静态字段

这里的想法是在bean由spring配置之后将bean移交给静态字段。

@Component
public class Boo {

    private static Foo foo;
    @Autowired
    private Foo tFoo;

    @PostConstruct
    public void init() {
        Boo.foo = tFoo;
    }

    public static void randomMethod() {
         foo.doStuff();
    }
}

来源:@Autowired and static method

答案 1 :(得分:0)

它可以被包含。

@Service
public class TestService {

    @Autowired
    private TestDao testDao;

    public static void test(){
        System.out.println("test");
    }
}


@RestController
@RequestMapping("/api/")
public class TestController {

    @Autowired
    private TestService testService;

    @PostMapping("test")
    public String test(){
       BrandTopNumService.test();
       return "ok";
    }
}