Почему не определены свойства, определенные в `applicationContext.xml` для определенного класса бинов? - PullRequest
0 голосов
/ 17 мая 2018

У меня есть простой проект под названием HelloWorld spring, и я пытаюсь загрузить два свойства из файла applicationContext.xml, но свойства не устанавливаются в соответствующих установщиках.

pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.4.RELEASE</version>
    </dependency>
</dependencies>

основной метод:

public class MyApp {

public static void main(String[] args) {
    ClassPathXmlApplicationContext context = new 
    ClassPathXmlApplicationContext("applicationContext.xml");
    TrackCoach trackCoach = context.getBean("myCoach", TrackCoach.class);
    trackCoach.getDailyWorkout();
    System.out.println(trackCoach.getName());
    System.out.println(trackCoach.getFamily());
    }
}

TrackCoach.java

public class TrackCoach {
private String name;
private String family;

public String getName() {
    return name;
}

public void setName(String name) {
    System.out.println("name is set");
    this.name = name;
}

public String getFamily() {
    return family;
}

public void setFamily(String family) {
    System.out.println("family is set");
    this.family = family;
}

public void getDailyWorkout() {
    System.out.println("track coach!");
    }
}

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

    <bean id="myCoach" class="TrackCoach">
        <property name="name" value="Jhon"/>
        <property name="family" value="Goo"/>
    </bean>

</beans>

Вывод:

track coach! null null

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

В вашем файле applicationContext.xml я вижу много проблем:

  1. Опубликованный вами файл pom.xml имеет одинаковую зависимость, объявленную дважды. Для запуска основного примера весны вам понадобится spring-core банка вместе с spring-context банка.

  2. Определить пространство имен контекста пружины. Вы можете указать на конкретную версию xsd, если хотите. Хотя на данный момент вы не используете какие-либо теги, связанные с контекстом, они понадобятся вам в большинстве базовых случаев весны.

     <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    
  3. Вы должны использовать полное имя класса для идентификации класса. Используйте пакет для группировки ваших классов.

      <bean id="myCoach" class="com.beans.TrackCoach">
         <property name="name" value="Jhon"/>
         <property name="family" value="Goo"/>
     </bean>
    
0 голосов
/ 17 мая 2018

Полное имя класса должно быть задано при определении компонента, например, класс TrackCoach присутствует в пакете com.test, тогда он будет выглядеть как com.test.TrackCoach

<bean id="myCoach" class="com.test.TrackCoach">
...