美文网首页Framwork
spring boot 通过xml方式注入bean以及配置bea

spring boot 通过xml方式注入bean以及配置bea

作者: moon_storm | 来源:发表于2018-08-01 09:55 被阅读1419次

问题

之前通过spring boot的注入是通过 @Autowried 进行的,但是如果想要配置bean中的参数或者对象就比较不方便。可以用之前spring的XML方式注入bean。

场景

在一个bean中注入一个map, map的类型是<String,Object>

bean

需要注入的bean

@Service
public class DruidEngineService implements IEngineService {

 DruidDaoImpl("192.168.7.56:8085");
    private Map<String,DruidDaoImpl> druidDaoImplMap;

    public Map<String, DruidDaoImpl> getDruidDaoImplMap() {
        return druidDaoImplMap;
    }

    public void setDruidDaoImplMap(Map<String,DruidDaoImpl> druidDaoImplMap) {
        this.druidDaoImplMap = druidDaoImplMap;
    }

    ....

}

在map中需要注入的bean

@Repository
public class DruidDaoImpl implements IStorageDao{
    private String routerUrl;

    public String getRouterUrl() {
        return routerUrl;
    }

    public void setRouterUrl(String routerUrl) {
        this.routerUrl = routerUrl;
    }
    ....
}

注入这个bean的类

@Component
public class MESRestfulServiceParser {

    private static final Logger logger = LoggerFactory.getLogger(MESRestfulServiceParser.class);

    @Autowired
    private SparkEngineService sparkService;

    @Autowired
    @Qualifier("druidEngineService")
    private DruidEngineService druidService;
    ...
}

note. @Component 这种标注一定要加,要不然spring boot 不认识。

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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="druidEngineService" class="com.mafengwo.mesc.mesdataapi.dispatcher.DruidEngineService">
    <property name="druidDaoImplMap" >
        <map>
            <entry key="default" value-ref="dataDruid"/>
            <entry key="web_proxy_log" value-ref="operationDruid"/>
        </map>
    </property>
</bean>

<bean id="dataDruid" class="com.mafengwo.mesc.mesdataapi.dao.Impl.DruidDaoImpl">
    <property name="routerUrl" value="192.168.7.56:8085"/>
</bean>

<bean id="operationDruid" class="com.mafengwo.mesc.mesdataapi.dao.Impl.DruidDaoImpl">
    <property name="routerUrl" value="192.168.10.22:8082"/>
</bean>
</beans>

配置类

spring boot还需要一个配置类

@Configuration
@ImportResource(locations = {"classpath:druid-beans.xml"})
public class BeanConfig {
}

指明地址就好

相关文章

网友评论

    本文标题:spring boot 通过xml方式注入bean以及配置bea

    本文链接:https://www.haomeiwen.com/subject/bgdlvftx.html