Spring Java 配置中的别名定义



我的项目依赖于依赖项.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;
}

这样,您就不必单独提供别名。

最新更新