Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925

AOP Spring

02.06.2014, 02:52. Показов 1289. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Начал разбираться со Spring.

Не могу разобраться почему не работает пример из книги. Help plz...

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans [url]http://www.springframework.org/schema/beans/spring-beans.xsd[/url] [url]http://www.springframework.org/schema/aop[/url] http://www.springframework.org/schema/aop/spring-aop.xsd">
 
    <bean id="knight" class="listing_1.BraveKnight">
        <constructor-arg ref="quest"/>
    </bean>
 
    <bean id="quest" class="listing_1.SlayDragonQuest"/>
 
    <bean id="minstrel" class="listing_1.Minstrel"/>
 
    <aop:config>
        <aop:aspect ref="minstrel">
            <!-- Объявление точки внедрения -->
            <aop:pointcut id="embark"   expression="execution(* *.embarkOnQuest(..))"/>
 
            <aop:before pointcut-ref="embark" method="singBeforeQuest"/>
            <aop:after  pointcut-ref="embark" method="singAfterQuest"/>
        </aop:aspect>
    </aop:config>
 
</beans>
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package listing_1;
 
/**
 * Created by Igor on 01.06.2014.
 */
public class BraveKnight implements Knight {
    private Quest quest;
    private Minstrel minstrel;
    public BraveKnight(Quest quest) {
        this.quest = quest; // Внедрение сценария подвига
    }
    public void embarkOnQuest(){
        quest.embark();
    }
}


Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package listing_1;
 
/**
 * Created by Igor on 02.06.2014.
 */
public class Minstrel {
    public void singBeforeQuest(){
        System.out.println("*** Песня до ***");
    }
 
    public void singAfterQuest(){
        System.out.println("*** Песня после ***");
    }
 
}


Exception in thread "main" org.springframework.beans.factory.BeanCr eationException: Error creating bean with name 'knight' defined in class path resource [knights.xml]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCr eationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJ PointcutAdvisor#0': Cannot create inner bean '(inner bean)#50b494a6' of type [org.springframework.aop.aspectj.AspectJM ethodBeforeAdvice] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCr eationException: Error creating bean with name '(inner bean)#50b494a6': Cannot resolve reference to bean 'embark' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCr eationException: Error creating bean with name 'embark': Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
github
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2014, 02:52
Ответы с готовыми решениями:

Spring AOP. При добавлении aop:config в xml проект критует
Начал изучать спринг, так что сильно меня не материте. Проблема в том что при добавлении в xml &lt;aop:config&gt; проект не компилится. ...

Spring AOP Example
Здравствуйте. Создал Spring AOP приложение по примеру из книги, не пойму в чем ошибка при запуске. Ошибка: Конфигурация: ...

Применение AOP в spring
Всем доброго времени суток. Сразу оговорюсь я новичок. Пробую создать первый пример программы с использованием AOP в spring. Однако никак...

5
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
02.06.2014, 11:04
Если уж начали учить спринг, учите более новые версии. То что написанно тут это уже устаревший и неудобный метод конфигурации.
В вашем примере
<aop:before pointcut-ref="embark" method="singBeforeQuest"/>
спринг понимает это как то что у него есть бин embark и пишет ошибку когда такого бина не находит.
Ну и я бы не стал тратить силы на изучение AOP т.к сфера его _оправданного_ применения довольно узкая, но зато очень легко начать пихать его куда непопадя тем самым сделав код совершенно нечитаемым.
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
02.06.2014, 12:23  [ТС]
KEKCoGEN, а как правильно будет сконфигурировать? Или все же что тут нужно исправить что бы заработало?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
02.06.2014, 13:07
Поищите в поиске по форуму, на прошлой неделе я кому то давал ссылки на примеры конфигураций спринга.
В данном случае незнаю что нужно исправить т.к с такой конфигурацией я не работал. Скорее всего проблема в
<aop:before pointcut-ref="embark" method="singBeforeQuest"/>
погуглите примеры по строке <aop:before pointcu
1
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
02.06.2014, 13:25  [ТС]
Спасибо, попробую
0
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
02.06.2014, 14:00
reisal78,
Кликните здесь для просмотра всего текста
как по мне если не трясётесь уж очень сильно за производительность, то юзайте AspectJ. Он проще конфигурится и предоставляет более мощный инструмент
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2014, 14:00
Помогаю со студенческими работами здесь

[Spring AOP] Написать аспект на println()
Необходимо написать аспект, который бы перед каждым sout в программе делал еще один sout с каким-то текстом. Вроде все правильно...

Spring AOP :: не вызывается метод invoke()
Hello world! С Java+Spring+AOP только разбираюсь, но не понимаю, почему не получается сделать всё как в примере:...

Spring AOP interface Pointcut Qualifier
Приветствую уважаемые форумчане. Вопрос про АОП. Всё вроде работает нормально с использованием интерфейса, проблем нет. ...

Java Spring Quiz teaching without AOP
Получил следующую задачку. Не могу найти вариант её решения. У меня есть сервис регистрции. В оин день кастомер решио что регистрация...

Spring MVC. 404 ошибка при включении Spring Data JPA в проект
Добрый день. Есть простой шаблонный проект с использованием Spring MVC и Maven. С зависимостями Spring MVC проект собирается нормально и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru