При изучении spring
'а решил реализовать пример из книги. Суть такова: есть класс с инициализированными полями. Есть класс с аналогичными пустыми полями и точкой входа. Есть конфигурационный xml
-файл, которому с помощью языка SpEL
передаётся значение поля name
. Потом класс с точкой входа принимает значение этого поля и выводит на экран. При запуске выдаёт такие ошибки:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'injectSimple' defined in class path resource [SPeL_Testing/spel-config-xml.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'SPeL_Testing' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public or not valid?
Caused by: org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'SPeL_Testing' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public or not valid?
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'SPeL_Testing' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public or not valid?
Main.class:
public class Main {
public String name;
public int age;
public float height;
public boolean programmer;
public Long ageinSeconds;
public static void main(String[] args) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("match-arguments.xml");
ctx.refresh();
Main simple = (Main) ctx.getBean("injectSimple");
System.out.println(simple);
}
public String toString() {
return "Name : " + name + "\n"
+ "Age:" + age + "\n"
+ "Age in Seconds: " + ageinSeconds + "\n"
+ "Height: " + height + "\n"
+ "Is Programmer?: " + programmer;
}
}
InjectSimpleSpel.class:
public class InjectSimpleSpel {
public String name="Chris Schaefer";
public int age=32;
public float height=1.778f;
public boolean programmer=true;
public Long ageInSeconds=1009843200L;
}
spel-config-xml.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="injectSimple" class="SpEL.Main"
p:name="#{SPeL_Testing.InjectSimpleSpel.name}"
p:age="32"
p:height="1.778"
p:programmer="true"
p:ageInSeconds="1009843200"/>
</beans>
Что делать?
Я так полагаю SPeL_Testing
- это наименование твоего пакета, в котором находится класс InjectSimpleSpel
, но лучше бы было разъяснить этот момент в вопросе. Из этого, я предполагаю, что ты хочешь обратиться к статической переменной класса. Поэтому замени
#{SPeL_Testing.InjectSimpleSpel.name}
на
#{T(SPeL_Testing.InjectSimpleSpel).name}
P.S. в java по негласному соглашению имена пакетов не должны содержать заглавных букв и знаков подчеркивания.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Встретил вот такой интересный участок кода, но ничего не могу про него найти:
Не могу понять в чем может быть ошибка при удалении
Занимаюсь получением http запроса, я вроде как пробился на сайт, но получаю след ошибки: