一般在Util等靜態方法中調用Service或mapper,初始化后會出現空指針異常:java.lang.NullPointerException。
代碼執行優先級的問題,在一個Java類中,存在著靜態代碼塊,靜態方法,構造函數,成員方法等等。不同形式的代碼執行順序不同:執行順序優先級:靜態代碼塊 > 靜態方法 > 構造函數(此時通過@Autowired修飾的成員變量為null)> bean注入 > @PostConstruct注解的init函數
類上加入了 @Component注解 使得可以使用注解注入,并交由Sping容器管理。
使用自帶注解@PostConstruct 注釋到初始化方法中,并在該初始化方法中將注入的對象賦予靜態成員變量。
@Component
public class TestUtil {private static TestUtil util;@Autowiredprivate TestService testService;@PostConstructpublic void init() {util = this;util.testService= this.testService;}public static void test() {util.testService.test();}> 打印輸出結果:TestServiceClass@Service
class TestService{public void Test(){System.out.println("TestServiceClass");}
}