在我的项目中我有一些外部Java接口(所以我无法改变它们)。 E.g。
public interface Abc
{
void do123();
}
在bean中我喜欢通过注入使用这个接口。 E.g。
public class TestAbc
{
@Inject
private Abc abc;
}
但我没有实现此接口或生产者方法。相反,我正在寻找为此接口注入通用代理的方法。
我想,我需要像cdi扩展这样的东西。不幸的是,我无法找到任何好的方法。 在一个最佳的世界中,我希望实现这样的方法。
public Object produce( Class< ? > type )
{
if(isMyType(type))
{
// I can produce this type
return createProxy(type);
}
return null; // this method can't produce this type
}
有没有人知道如何做到这一点?
此致 约翰内斯
答案 0 :(得分:1)
所以,最后我明白了。 对于我的用例,我需要一个CDI扩展,它可以监听ProcessInjectionPoint和AfterBeanDiscovery。 ProcessInjectionPoint收集所有相关的注入接口,AfterBeanDiscovery为这个接口创建bean。
检查注入是否相关是通过@RMI的注释完成的。 @RMI是一个自己的限定符注释。 RMILifecyle负责构建或销毁注入的对象。 这里有一些源代码。
import Foundation
import Alamofire
import UIKit
class webViewController: UIViewController {
@IBOutlet var webBrowser: UIWebView! = nil
var targetURL = "https://www.yahoo.co.jp"
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//loadAddressURL()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func loadAddressURL() {
let requestURL = NSURL(string: targetURL)
let req = NSURLRequest(url: requestURL as! URL)
webBrowser.loadRequest(req as URLRequest)
}
}
这对我很有用。