赞
踩
目录
import com.example.javautilsproject.service.AutoMethodDemoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; /** * springboot静态方法获取 bean 的三种方式(一) * @author: clx * @version: 1.1.0 */ @Component public class StaticMethodGetBean_1 { @Autowired private DService dService; @Autowired private static DService staticDService; @PostConstruct public void init() { staticDService = dService; } public static String getAuthorizer() { return staticDService.test(); } }
注解@PostConstruct说明
PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化。此方法必须在将类放入服务之前调用。支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源,用 PostConstruct 注释的方法也必须被调用。只有一个方法可以用此注释进行注释。
应用 PostConstruct 注释的方法必须遵守以下所有标准:
实现方式:在springboot的启动类中,定义static变量ApplicationContext,利用容器的getBean方法获得依赖对象
@SpringBootApplication
public class Application {
public static ConfigurableApplicationContext ac;
public static void main(String[] args) {
ac = SpringApplication.run(Application.class, args);
}
}
@RestController
public class TestController {
/**
* 方式二
*/
@GetMapping("test2")
public void method_2() {
AutoMethodDemoService methodDemoService = Application.ac.getBean(AutoMethodDemoService.class);
String test2 = methodDemoService.test2();
System.out.println(test2);
}
}
//这样注入,也是可以的
@Autowired
private ConfigurableApplicationContext ac;
@Autowired
private ApplicationContext applicationContext;
@RestController
public class TestController {
/**
* 方式二
*/
@GetMapping("test2")
public void method_2() {
AutoMethodDemoService methodDemoService = Application.ac.getBean(AutoMethodDemoService.class);
String test2 = methodDemoService.test2();
System.out.println(test2);
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。