1.17 如何@Autowire从外部jar创建的spring bean? | Java Debug 笔记

本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看 活动链接

Debug 笔记
<如何@Autowire从外部jar创建的spring bean?>

提问

我有一个已创建的模块/ jar,正在用作util库。我在这里创建了一个服务,如下所示:

@Service
public class PermissionsService { ... }
复制代码

它位于以下位置的包中:
com.inin.architect.permissions和我的主应用程序中,我正在引用/加载此jar(即,设置为该应用程序的Maven POM.xml文件中的依赖项),

例如:

<dependency>
        <groupId>com.inin.architect</groupId>
        <artifactId>permissions</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
复制代码

在应用程序中,我想使用该服务,例如:

@Autowired
PermissionsService permissions
复制代码

我得到了以下信息:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.inin.generator", "com.inin.architect.permissions" })
public class WebConfig extends WebMvcConfigurerAdapter implements ServletContextAware { }
复制代码

但是,当我在tomcat下运行我的应用程序时,它抱怨没有PermissionsServicebean :“ org.springframework.beans.factory.NoSuchBeanDefinitionException:没有合格的bean类型。”

那么,如何将beanlib引入到我的应用程序中呢?

当然有办法。您是否必须将库设置为完整的Spring MVC应用程序,这样才能正常工作?即您是否也必须在lib中安装@Configuration@ComponentScan

回答一:

您必须至少扫描包含要注入类的软件包。例如,使用Spring 4

@Configuration
@ComponentScan("com.package.where.my.class.is")
class Config {
...
}
复制代码

回答二:

只是对此的注释,但是您可以将依赖关系与spring分离。在您的@Configuration任务中创建

@Bean public PermissionsService  permissionsService(){
   return new PermissionsService()
}
复制代码

这也将允许它被注入。不必删除spring注释,只是使它在spring之外可能可用的一种选择。

回答三:

您可以通过以下方式在主应用程序中导入com.inin.architect.permissionsapplication-context.xml

<import resource="classpath:/permissionApplicationContext.xml" />
复制代码

这将使您能够从定义的com.inin.architect.permissions自动装配bean

文章翻译自Stack Overflow :stackoverflow.com/questions/2…

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享