有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java机器人服务。如何在项目中从库扩展bean

我想在我的Android应用程序中使用RoboSpring作为控制反转。应用程序由Android库和独立的项目组成,该项目覆盖了库中的一些资源。还有很多其他项目使用这个库。所以图书馆就像一个地下室,项目的作用是改变标识、主题等,而不是应用的逻辑。但现在我需要更改其中一个应用程序中的一些逻辑。所以我决定使用机器人漫游

我是在库的src文件夹文件applicationContext中创建的。xml与

<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/util
           http://www.springframework.org/schema/util/spring-util.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
           http://www.springframework.org/schema/context 
           http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <context:annotation-config />

    <bean id="myServiceUrl" class="java.net.URL">
        <constructor-arg value="http://www.robospring.org" />
    </bean>

    <bean id="client" class="com.example.Client">
        <constructor-arg ref="clientParser"/>
    </bean>

    <bean id="clientParser" class="com.example.Parser"/>

</beans>

例如,我声明了一些bean,需要在其中一个项目中更改clientParser

问题#1:
我甚至无法覆盖文件应用程序上下文。因为我将得到错误:Error generating final archive: Found duplicate file for APK: applicationContext.xml
我应该保留应用上下文。xml仅在项目或库中使用,但在每个项目中复制粘贴此文件并不好。我认为这可以通过使用自定义contextConfigLocation解决,但不确定如何解决

问题#2
即使我在压倒一切的环境中成功了。xml我怎么能只覆盖部分bean,实际上只覆盖一个bean?因为我认为文件没有合并,我应该覆盖整个xml文件

事实上,我是控制反转的新手,也许我选择了不正确的工具来解决我的问题,所以任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    这是一个与Spring相关的问题,您可以使用RoboSpring解决它,就像使用Spring框架一样。请看一下这个答案:

    https://stackoverflow.com/a/11834159/1210793

    我建议在库项目中使用另一个名称作为上下文定义,例如库上下文。xml。然后可以从应用程序上下文导入它。xml在每一个相关项目中,比如:

    <!  import from the classpath of your library  >
    <import resource="classpath:library-context.xml"/>
    
    <!  overriding the clientParser bean  >
    <bean id="clientParser" class="another.Parser"/>
    

    在使用Android的构建变体(例如产品风格)时,您也可以通过将Spring配置放在不同的源文件夹中来采用这种方法

    快乐压倒一切