Разделение между контекст приложения и Веб-контекст (и проблемы с загрузчиком класса) являются постоянным источником проблем для меня. Я использую Spring в своем первом проекте, переходя от плохо написанного JSP-основанного webapp к Spring-based.Какие бобы идут в контексте приложения в контексте Web-контекста весной?
Я просто хочу знать, если эта конфигурация имеет смысл:
- У меня есть контроллеры, объекты формы, и такие определены с помощью аннотаций и сканируется в контексте веб-приложений.
- Я переместил DAO (объекты доступа к данным) в контекст приложения после того, как изначально они были в контексте веб-приложения - это было потому, что мне нужно было использовать их для получения пароля пользователя для безопасности весны, который является компонентом контекста приложения ,
- Весенняя безопасность, если она определена (согласно документам) в контексте приложения, что вынуждает DAO идти с ней.
Теперь я бегу в проблемы ClassLoader, где я передать объект JDO/DataNucleus и он создан веб-приложения загрузчику, но объекты DAO являются частью контекста приложения, таким образом, что компонент получает свой собственный загрузчик классов и не могут совпадать с теми же объектами.
Простой метод от DAO:
@Override
public boolean userExists(String username) {
Query query = pm.newQuery(User.class);
query.setFilter("username == :usernameParam");
query.setResult("count(username)");
query.setResultClass(Long.class);
System.out.println(username);
Long result = (Long)query.execute(username);
return (result!=null && result>0);
}
javax.jdo.JDOUserException: Запросов возвращает одно поле, но это не последовательного типа, как ResultClass (java.lang. Long): это java.lang.Long
Я спрашиваю, потому что это не первая проблема Загрузчик классов (и я боюсь, не последняя) выскакивать из-за способа Sprin g настроен прямо сейчас, поэтому мне интересно, плохо ли я что-то делаю.
Возможно, существуют некоторые конфигурации, которые относятся к этим типам проблем загрузчика классов, о которых я еще не знаю?
Ваша терминология сбивает с толку. «контекст приложения» и «веб-контекст» могут ссылаться на разные вещи, но вы используете их, как будто они означают нечто конкретное. – skaffman
Спасибо, скаффман, я поясню, что имею в виду контекст приложения Spring (который в терминах spring-mvc представляет собой контекст cross-webapp, под которым создаются бобы, доступные во всех веб-папках) и WebApp Context, который является контекстом в который создает все бобы, специфичные для одного webapp. Я хочу использовать термины в терминологии Spring. –