我的项目依赖于依赖项.jar工件。依赖项包含一个 Spring 服务:
@Service
public class Service { }
在我的项目中,我从服务继承并覆盖某些功能:
@Service
public class MyService extends Service {
// overriding
}
在Spring XML配置中,我定义了别名以在任何地方使用myService over Service:
<alias name="myService" alias="service" />
如何在Spring Java配置中进行别名定义?目前我是这样做的,但它不是很优雅:
@Bean(name = "service")
public Service service(@Qualifier("myService") Service projectImplementation) {
return projectImplementation;
}
有没有更好的方法可以在Spring Java配置中做到这一点?谢谢!
您可以在声明 Bean 时提供多个别名:
@Bean({"myService", "service"})
根据name
属性文档:
此 Bean 的名称,或者如果有多个名称,则为主 Bean 名称加上别名。
如果未指定,则 Bean 的名称是带注释的方法的名称。如果指定,则忽略方法名称。如果没有声明其他属性,也可以通过 value 属性配置 Bean 名称和别名。
您可以使用@Service注释的值属性并在那里给出您的别名,例如 -
@Service ("service")
public class MyService extends Service {
// overriding
}
在自动接线或注入时使用 value 属性中给出的别名,例如 -
@Controller ("controller")
public class MyController
{
@Autowired
@Qualifier("service")
private MyService service;
}
这样,您就不必单独提供别名。