package com.msb.source;
public class UserService {
}
package com.msb.source;
public class UserController {
@Autowired
private UserService userService;
public UserService getUserService() {
return userService;
}
}
package com.msb.source;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Inherited
@Documented
public @interface Autowired {
}
package com.msb.source;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
UserController userController = new UserController();
Class<? extends UserController> clazz = userController.getClass();
Stream.of(clazz.getDeclaredFields()).forEach(field -> {
Autowired annotation = field.getAnnotation(Autowired.class);
if( annotation != null ) {
field.setAccessible(true);
Class<?> type = field.getType();
Object o = null;
try {
o = type.newInstance();
field.set(userController, o);
} catch( InstantiationException e ) {
e.printStackTrace();
} catch ( IllegalAccessException e ) {
e.printStackTrace();
}
}
});
System.out.println(userController.getUserService());
}
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3c2a0efae712cd47ac476e61629325ae.png)