Spring静态对象注入

luckyFang 2021年03月02日 31次浏览

问题

有时候我们难免要用到一些工具类,这些工具类通常都是静态变量。
回忆spring开发,我们都是使用@Autowired实现属性的注入,但是不支持静态属性注入。

@Autowired
private static ClassType className;

因为静态变量不是对象的属性是一个类的属性属性

解决

因此我们通过修改 set方法就可以实现

User.java

@Component
public class User {
    @Value("luckyFang")
    public String name;
}

Config.java

@Configuration
@ComponentScan("org.example")
public class Config {

}

Test.java

@Component
public class Test {
    private static User user;


    // 修改 set方法实现 静态注入
    @Autowired
    public void setUser(User user) {
        Test.user=user;
    }


    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
        System.out.println(user);
    }
}