@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Inherited
@Documented
public @interface Autowired {
}
public class Userservice {
}
public class UserController {
@Autowired
private Userservice userservice;
public Userservice getUserservice() {
return userservice;
}
}
public class Test {
public static void main(String[] args) throws Exception{
//使用反射使用set方法注入
UserController userController = new UserController();
//获取类
Class<? extends UserController> clazz = userController.getClass();
Stream.of(clazz.getDeclaredFields()).forEach(field -> {
Autowired annotation = field.getAnnotation(Autowired.class);
field.setAccessible(true);
if(annotation!=null){
//获取类型创建对象
Class<?> type = field.getType();
try {
Object o = type.newInstance();
field.set(userController,o);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
});
System.out.println(userController.getUserservice());
}
}