小编Sta*_*lin的帖子

使用Spring框架的抽象工厂

我有一些抽象工厂

public interface AbstractViewersFactory {
    IAbstractShapeViewer createRectangle(BaseOperationsListener<RectangleDTO> p);
    IAbstractShapeViewer createOval(BaseOperationsListener<OvalDTO> p);
    IAbstractShapeViewer createTriangle(BaseOperationsListener<TriangleDTO> p);
}
Run Code Online (Sandbox Code Playgroud)

并实现了Draw2DViewersFactory.现在,我想创建一个类,负责按模型创建演示者/查看器并由Spring配置它.所以,我需要在.xml配置中描述它应该调用的方法.它可以是这样的(伪配置)

<bean creator>
<constructor-args>
<list>
    <bean describe-item> <constructor-args>model=Rectangle.class, method-for-viewer-create="createRectangle"</args>
    <bean describe-item> <constructor-args>model=Oval.class, method-for-viewer-create="createOval"</args>
<list>
</constructor-args>
</bean>
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

谢谢.

java configuration spring dependency-injection

1
推荐指数
1
解决办法
4459
查看次数

添加到地图时的Java异常

不确定有什么问题......它应该工作还是可能缺少什么?以下是代码:

public class TestOracleMap implements java.io.Serializable{
static TreeMap<String, Integer> map;
static TreeMap<String, Integer> localMap = new TreeMap<String, Integer>();

public static void StoreMapInDB(TreeMap<String, Integer> map) throws
        IOException, FileNotFoundException{
    try {
  PreparedStatement insertMap = null;
  //String insertString = "INSERT INTO TESTMAP(ID, MPFIELD) VALUES (1, ?)";
  Connection con=null;
  con.setAutoCommit(false);
  Class.forName("oracle.jdbc.driver.OracleDriver");
  con=DriverManager.getConnection(
    "jdbc:oracle:thin:@oXXX",
    "XXX",
    "XXX");

  ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
  ObjectOutputStream out = new ObjectOutputStream(bos);
  out = new ObjectOutputStream(bos) ;
  out.writeObject(map);
  out.close();

  byte[] buf = bos.toByteArray();
  PreparedStatement prepareStatement = con.prepareStatement("insert into  

  TESTMAP(ID,MAPFIELD)values(?,?)");
  prepareStatement.setLong(1, …
Run Code Online (Sandbox Code Playgroud)

java map nullpointerexception

0
推荐指数
1
解决办法
1298
查看次数

高阶函数和简短形式

为什么我们可以写

 (defn factory-foo [] (fn [] (println "foo")))
 (apply (factory-foo) [])
Run Code Online (Sandbox Code Playgroud)

但不是:

 (defn factory-bar [] #((println "bar")))
 (apply (factory-bar ) []) ;throws NPE
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?

macros function clojure

0
推荐指数
1
解决办法
81
查看次数

从嵌入式OSGi框架中消费服务

我有可嵌入的菲利克斯.我有一些API包和Impl.API导出接口C.Impl导入该接口并在激活器中注册impl.现在我想得到C impl otside OSGi

  FrameworkFactory ff = new FrameworkFactory();
  ...
  BundleContext bc = fwk.getBundleContext();
  ...
  final ServiceReference[] serviceReferences = bc.getServiceReferences(C.class.getName(), "(objectclass=" + C.class.getName() + ")");
  for(ServiceReference serviceReference : serviceReferences){
     final Object service = bc.getService(serviceReference);
     ...
  }
Run Code Online (Sandbox Code Playgroud)

现在我想与它互动.我可以用反射来做

     System.out.println(service.getClass().getMethod("some").invoke(service)); //using 
Run Code Online (Sandbox Code Playgroud)

但我无法施展它

     System.out.println(service instanceof C); //prints false
Run Code Online (Sandbox Code Playgroud)

我想这来自不同的ClassLoaders.但我怎么解决呢?我们如何从外部与OSGi环境相互作用?或者我们可以将它全部放入OSGi容器中?

java osgi

0
推荐指数
1
解决办法
765
查看次数