如果我在Spring MVC中使用基本控制器类,那么定义为子类的控制器是否会获得基本控制器中定义的任何私有静态对象的单独实例?例如:BaseController:@Controllerpublic class BaseController{ private UserService userService; private static final Logger log = LoggerFactory.getLogger(BaseController.class); private static final Map<String, String> NameValueMap = Common.getNameValueMap(); public final UserService getUserService() { return userService; } @Autowired public final void setUserService(UserService userService) { this.userService = userService; }}控制器A:@Controllerpublic class ControllerA extends BaseController{}控制器B:@Controllerpublic class ControllerB extends BaseController{}ControllerA和ControllerB各自具有NameValueMap的单独实例吗?基本控制器中定义的@Autowired userService是否意味着不需要在ControllerA和ControllerB中定义?如果在ControllerA或ControllerB中使用了BaseController中定义的记录器实例,则它必然引用为BaseController定义的一个实例,因为: LoggerFactory.getLogger(BaseController.class) 最佳答案 静态不会被继承(尽管有时看起来是静态的),并且不会(重新)为子类初始化。创建这些实例字段(如果要在子类中访问它们,还可以将它们设置为protected而不是private):protected final Logger log = LoggerFactory.getLogger( getClass() );protected final Map<String, String> NameValueMap = Common.getNameValueMap();这样,每个子类都将具有这些字段的实例,并且也可以访问它(请注意,对于Logger实例化,您现在可以使用getClass()了,它是一个实例方法,每个子类都将提供自己的对象)。对于Class问题,一般的答案是,如果注释本身带有(meta)注释@Autowired,则该注释适用于子类。据我所知,@Inherited不是。关于java - 有关使用基础 Controller 类时继承如何影响Spring Controller类的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6051348/ 10-09 21:23