Spring注入static属性

转载自:https://blog.csdn.net/z69183787/article/details/25365873

第一种方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Component
public class UserUtils {
private static UserAccessor userAccessor;

@Autowired(required = true)
public void setUserAccessor(UserAccessor userAccessor) {
UserUtils.userAccessor = userAccessor;
}

public static void deal(){
userAccessor.sys();
}
}

第二种方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Component
public class UserUtils {
private static UserAccessor userAccessor;

@Autowired(required = true)
public UserUtils(UserAccessor userAccessor) {
UserUtils.userAccessor = userAccessor;
}

public static void deal(){
userAccessor.sys();
}
}

第三种方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Component
public class UserUtils {

private static UserUtils userUtils;

@Autowired
private UserAccessor userAccessor;

@PostConstruct
public void init() {
userUtils = this;
userUtils.userAccessor = this.userAccessor;
}

public static void deal(){
userUtils.userAccessor.sys();
}
}

第四种方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Component
public class ContextProvider implements ApplicationContextAware {

private static ApplicationContext CONTEXT;

@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ContextProvider.CONTEXT = applicationContext;
}

public static <T> T getBean(Class<T> beanClass) {
return ContextProvider.CONTEXT.getBean(beanClass);
}

public static <T> T getBean(String beanName) {
return (T)ContextProvider.CONTEXT.getBean(beanName);
}
}
1
2
3
4
5
6
7
8
9
@Component
public class UserUtils {
private static UserAccessor userAccessor =
ContextProvider.getBean(UserAccessor.class);

public static void deal(){
userAccessor.sys();
}
}