Tôi có một mô-đun/bình mà tôi đã tạo và đang sử dụng làm thư viện số util. Tôi tạo ra một dịch vụ trong đó như sau:Làm thế nào tôi có thể @Autowire một bean mùa xuân đã được tạo ra từ một bình bên ngoài?
@Service
public class PermissionsService { ... }
... nơi này nằm trong một gói ở đây: com.inin.architect.permissions và trong ứng dụng chính của tôi, tôi tham khảo/tải jar này (tức là thiết lập như là một sự phụ thuộc trong maven tập tin pom.xml cho ứng dụng) như sau:
<dependency>
<groupId>com.inin.architect</groupId>
<artifactId>permissions</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
và trong ứng dụng tôi muốn sử dụng dịch vụ như:
@Autowired
PermissionsService permissions
Trong thiết lập mùa xuân của ứng dụng, tôi đã nhận điều này:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.inin.generator", "com.inin.architect.permissions" })
public class WebConfig extends WebMvcConfigurerAdapter implements ServletContextAware { }
Tuy nhiên khi tôi chạy ứng dụng của tôi dưới tomcat, nó than phiền rằng không có một bean cho PermissionsService: "org.springframework.beans .factory.NoSuchBeanDefinitionException: Không có loại đậu đủ điều kiện ... "
Vì vậy, làm cách nào tôi có thể chuyển đậu từ thư viện lib vào ứng dụng của mình? Chắc chắn có một cách. Bạn có phải thiết lập thư viện như là một ứng dụng MVC mùa xuân thổi đầy đủ để điều này có thể làm việc? tức là bạn có phải thiết lập @Configuration và @ComponentScan trong thư mục lib không?
Điều này chắc chắn có thể xảy ra. Điều đầu tiên cần kiểm tra là liệu tệp jar bên ngoài của bạn có đang được triển khai với tomcat cùng với mọi thứ khác không. Đôi khi nó xuống theo cách bạn đang triển khai, chứ không phải là mùa xuân autowiring. –
Gói có chứa bean này được quét bởi Spring không? Tại sao bạn không cung cấp mã và cấu hình có liên quan? –
Nếu đây là tên thật, bạn nên tuân thủ các quy ước đặt tên thông thường, tức là tên lớp bắt đầu bằng chữ hoa. – dunni