Tôi muốn tạo ra phương pháp sản xuất đậu của một mùa xuân đó là ý thức người gọi nó, vì vậy tôi đã bắt đầu với đoạn mã sau:Tương đương với Spring DI của InjectionPoint của CDI là gì?
@Configuration
public class LoggerProvider {
@Bean
@Scope("prototype")
public Logger produceLogger() {
// get known WHAT bean/component invoked this producer
Class<?> clazz = ...
return LoggerFactory.getLogger(clazz);
}
}
Làm thế nào tôi có thể nhận được thông tin người muốn để có được những hạt đậu tiêm?
Tôi đang tìm một số tương đương với CDI's InjectionPoint
trong thế giới mùa xuân.
Cảm ơn Ralph! Ok, do đó, BeanPostProcessor' này được gọi bất cứ khi nào bất kỳ bean nào được tiêm vào bất cứ đâu. Có cách nào tôi có thể nhận ra ** những gì ** đậu là để được tiêm? Tôi có nghĩa là tôi đã nhận: 'postProcessBeforeInitialization (Object bean, String beanName)' trong đó 'bean' là một bean muốn tiêm được tạo (phần ** người ** mà tôi đã hỏi trong câu hỏi của tôi), và' beanName 'là tên' bean'. Bây giờ tôi không biết những gì lĩnh vực trong 'bean' muốn tiêm được thực hiện - nói cách khác tôi không biết nếu đậu tiêm là 'LoggerProvider' hoặc cái gì khác. –
Là giá vé như tôi hiểu, bộ xử lý bài được gọi là afer một bean được tạo ra! (không tiêm bất cứ nơi nào). Ý tưởng là để thực hiện khuôn khổ tiêm nhỏ của riêng bạn trên đầu trang của Bean Post Processor. – Ralph
Ok, vì vậy trình cài đặt 'BeanPostProcessor' sẽ được gọi bất cứ khi nào một bean được tạo ra. Vì vậy, ý tưởng của bạn là triển khai 'postProcessBeforeInitialization' và ví dụ: quét cho các trường có chú thích tùy chỉnh của tôi (giả sử '@ Logger') và, thông qua sự phản chiếu, khởi tạo trường như vậy bằng cách sử dụng logic tùy chỉnh của riêng tôi. Đây có phải là cách tiếp cận của bạn hoặc tôi đã làm phức tạp nó quá nhiều? Một lần nữa xin cảm ơn! –