Java Springbean类可以包含静态方法吗?
我希望这不是一个很难回答的问题,我对春天还是很陌生的。bean类可以包含静态方法吗?我最初的想法是否定的,因为静态方法是全局的,整个应用程序和线程都有一个实例可以共享,但bean可能没有这样定义 我试图寻找这个问题,但找不到明确的答案 是的 Springbean也可能有静态方法 使用构造函数@AutowiredJava Springbean类可以包含静态方法吗?,java,spring,spring-bean,Java,Spring,Spring Bean,我希望这不是一个很难回答的问题,我对春天还是很陌生的。bean类可以包含静态方法吗?我最初的想法是否定的,因为静态方法是全局的,整个应用程序和线程都有一个实例可以共享,但bean可能没有这样定义 我试图寻找这个问题,但找不到明确的答案 是的 Springbean也可能有静态方法 使用构造函数@Autowired @Component public class Boo { private static Foo foo; @Autowired public Boo(Foo
@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将值移交给静态字段
@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;
}
}
这里的想法是在spring配置bean之后将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();
}
}
来源:它可以包含在内
@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(){
TestService.test();
return "ok";
}
}
当然,类可以包含静态方法。更好的问题是它是否应该包含静态方法。(正如您所注意到的)静态方法是全局的,每个应用程序有一个实例(也就是说,它们是单例的)。因此,您必须确保任何静态方法都是线程安全的。