<bean id="systemUserService" class="com.alan.SystemUserServiceImpl">
<if ***>
<property name="exm1" ref="exm1"></property>
</if>
<else if ***>
<property name="exm2" ref="exm2"></property>
</else if>
<else>
<property name="exm3" ref="exm3"></property>
</else>
</bean>
不知道有spring的配置文件有没有以上的实现,根据判断条件来决定注入哪一个对象
++++++++++++++++++++++++++分隔线+++++++++++++++++++++++++++++++++
我所想到的另一途径是
1、新建一个.properties文件,来定义常量,如dubboOrSql=1
2、新建一个工具类ConstantsConfig来读取上面的.properties文件的常量。
3、在serviceImpl类中,对此进行判断 ,来决定实例化哪个对象.
ISystemData sd;
String dubboOrSql = ConstantsConfig.getDubboOrSql();
if("1".equals(dubboOrSql)){
sd = app.getBean("exap1");
}else if("0".equals(dubboOrSql)){
sd = app.getBean("exap2");
}
//后面就是调用sd的一些方法了。
Ce problème peut être résolu à l'aide des fichiers de configuration de propriétés
.1. Ajoutez un fichier de propriétés, tel que config.propertiest, et définissez la paire clé-valeur dao.prefix=.
2. fichier de configuration du printemps.
3. Vous pouvez utiliser des variables de fichier d'attributs dans <bean>, telles que ${dao.prefix}
4. L'injection sélective peut être effectuée en service :
Vous pouvez utiliser le profil de Spring pour résoudre ce problème. Les profils peuvent être utilisés pour correspondre à différentes configurations (telles que la configuration de la base de données) dans différents environnements pour répondre à vos besoins.
Ce qui suit configure trois attributs différents du même bean sous trois profils (dev, test, product) :
Comment activer un profil au démarrage du programme, il existe de nombreuses façons, il suffit d'en choisir une :
Méthode de code
commande Java-Dspring.profiles.active="dev"
web.xml
S'il s'agit d'un projet web, vous pouvez configurer web.xml
Commencer avec différents profils chargera différents beans et différentes configurations.
Je ne sais pas si Spel peut résoudre le problème, vous pouvez le rechercher et voir