Probleme mit XMLBeanFactory

Sascha Laurent

Aktives Mitglied
Hallo Leute,

ich arbeite mich gerade in XMLBeanFactory ein. Hierzu habe ich mir ein kleines Testprogramm geschrieben

Java:
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class Main {

    public static void main(String[] args) {
        System.out.println(Config.getInstance());
    }
}

class Config {
	   private static Config instance = null;
	
	   private String defaultLanguage = "en-GB";

       // Constructor
       private Config() {
		       super();
	   }

       public static Config getInstance() {
              if (instance == null) {
                 XmlBeanFactory beanFactory = 
            	    new XmlBeanFactory(new ClassPathResource("config.xml"));
                 instance = (Config) beanFactory.getBean("config");
              }
           
              return instance;
       }
    
       // Getter / Setter
	   public String getDefaultLanguage() {
		      return defaultLanguage;
	   }

	   public void setDefaultLanguage(String defaultLanguage) {
		      this.defaultLanguage = defaultLanguage;
	   }      

	   @Override
	   public String toString() {
	          return String.format("Language: %s\n",
	                      this.defaultLanguage);
	   }
}

mit

Java:
<?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"
       xsi:schemaLocation="
       [url=http://www.springframework.org/schema/beans]Index of /schema/beans[/url]
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="config" 
          class="Config"
          p:defaultLanguage="de-DE"/>
</beans>

Dieses Funktioniert auch wunderbar. Wenn ich aber die Config - Klasse in eine andere Package verschiebe z.B.

de.sascha.shared.config

Dann wird mir bei


Java:
        System.out.println(Config.getInstance());

bei "Config" gemeldet "The type Config is not visible". Woran könnte dieses liegen?

Danke
Sascha

P.S. Ich binde natürlich über

import de.sascha.shared.config.Config;

am Anfang der main - Datei ein.
 
Zuletzt bearbeitet:

mvitz

Top Contributor
Code:
<?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"
       xsi:schemaLocation="
       [url=http://www.springframework.org/schema/beans]Index of /schema/beans[/url]
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="config" 
          class="de.sascha.shared.config.Config"
          p:defaultLanguage="de-DE"/>
</beans>

Das package gehört natürlich auch in die Spring Config Datei rein.

Abgesehen davon, ist das was du da machst jetzt auch nicht viel schöner... Damit missbrauchst du den Spring DI Container für eine Art Configurierbares Singleton.
 

Sascha Laurent

Aktives Mitglied
Na ganz einfach: Spring so nutzen wie es gedacht war.

Und wie ist deiner Meinung nach BeanFactory gemeint?
Was ich nämlich realisieren möchte ist, eine gemeinsame Klasse, in der alle wichtigen Informationen in einer Datei (Klasse) zusammengefasst sind.

Dazu gehört auch ein anderes Design ;)

Und wie würdest du das Design aufsetzen?

Was allgemeines zum Thema von Fowler: Inversion of Control Containers and the Dependency Injection pattern
Die offizielle Spring Doku as du ja gelesen, oder?

Spring ist ja ein großes Thema, deshalb habe ich mich natürlich auf die Sachen konzentiert, die für mich wichtig sind. D.h. ich habe mich in die gängisten Spring-Teilen eingelesen.

Danke
Sascha
 
M

maki

Gast
Und wie ist deiner Meinung nach BeanFactory gemeint?
Höchstens zum Testen bzw. wenn man verzweifelt genug ist anstatt DI doch wieder RL zu verwenden ;)

Normalerweise würdest du nix von der BeanFactory mitbekommen ;)

Was für eine Art Projekt hast du denn da?
 

Sascha Laurent

Aktives Mitglied
Höchstens zum Testen bzw. wenn man verzweifelt genug ist anstatt DI doch wieder RL zu verwenden ;)

Normalerweise würdest du nix von der BeanFactory mitbekommen ;)

Was für eine Art Projekt hast du denn da?
Hallo Maki,

ich soll hier für einen Bekannten eine Art Eventmanagementsystem mit ein paar Besonderheiten entwickeln. Dieses beinhaltet natürlich unteranderem die Abrechnung und Verwaltung der Seminare. Also im weitesten Sinne eine kaufmännische Anwendung. Hierfür muss es natürlich etliche globale Konfigurationseinstellungen angegeben werden, da mein Bekannter in zwei Ländern Firmen unterhält. So ist z.B. die Umsatzsteuer in den Ländern unterschiedlich.

Deshalb suche ich, wie bereits beschrieben, eine Möglichkeit alle Einstellungen möglichst in einer Datei zu hand haben. Natürlich möchte ich für später auch eine Möglichkeit haben, die globalen Konstanten zu erweitern, etc.

Danke
Sascha
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben