spring静态属性如何注入?

1、创建静态属性使用的类

/**
 * 被注入到静态属性的service
 */
@Service
public class StaticService {

    public void test(){
        System.out.println("StaticService test方法被调用");
    }

}

2、创建需要注入静态属性的类

/**
 * 需要注入静态属性的类
 */
@Service
public class TestService {

    private static StaticService staticService;

    @Autowired
    public void setStaticService(StaticService staticService) {
        TestService.staticService = staticService;
    }

    public void test(){
        System.out.println("调用静态属性中的方法");
        staticService.test();
        System.out.println("结束");
    }
}

3、创建测试类

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class TestServiceTest {

    @Autowired
    private TestService testService;

    @Test
    public void test1() {
        testService.test();
    }
}

结果:

调用静态属性中的方法
StaticService test方法被调用
结束

原理:
spring会扫描@Autowired注解,发现注解在TestService上的setStaticService方法,于是spring会调用这个方法来注入,在setStaticService方法中。将注入的对象设置到类的静态属性中,以此达到所需要的效果。


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍