powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / AspectJ или устаревший материал (Spring AOP)
20 сообщений из 20, страница 1 из 1
AspectJ или устаревший материал (Spring AOP)
    #39508006
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Штудирую "Spring 4 для профессионалов, 4-ое издание", и вот все что касается AspectJ - ни один пример не работает.

Вот пример последнего некомпилируемого проекта.
pom.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>GroupId</groupId>
    <artifactId>AOPAspectJSingleInstance</artifactId>
    <version>1.0-SNAPSHOT</version>
</project>



MessageWriter.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
package com.spring.aop;

public class MessageWriter {
    public void writeMessage(){
        System.out.println("foobar()");
    }

    public void foo() {
        System.out.println("foo()");
    }
}



MessageWrapper.aj
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
package com.spring.aop;

public aspect MessageWrapper {
    private String prefix;
    private String suffix;

    public String getPrefix() {
        return prefix;
    }

    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }

    public String getSuffix() {
        return suffix;
    }

    public void setSuffix(String suffix) {
        this.suffix = suffix;
    }

    pointcut doWriting() :
        execution(*
                com.spring.aop.MessageWriter.writeMessage());
    before() : doWriting() {
        System.out.println(prefix);
    }
    after() : doWriting() {
        System.out.println(suffix);
    }
}



app-context-xml.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?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.xsd">
    <bean id="aspect" class="com.spring.aop.MessageWrapper"
          factory-method="aspectOf">
        <property name="prefix">
            <value>The Prefix</value>
        </property>
        <property name="suffix">
            <value>The Suffix</value>
        </property>
    </bean>
</beans>


Здесь Idea, в "property name" подсвечивает красным prefix и suffix , и пишет - Cannot resolv property 'prefix'/'suffix'



AspectJExample .java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
package com.spring.aop;

import org.springframework.context.support.GenericXmlApplicationContext;

public class AspectJExample {
    public static void main(String[] args) {
        GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
        ctx.load(new String[]{"classpath:META-INF/spring/app-context-xml.xml"});
        ctx.refresh();

        MessageWriter writer = new MessageWriter();
        writer.writeMessage();
        writer.foo();
    }
}



В либах имеем:
org.aspectj:aspectjrt:1.8.9
org.aspectj:aspectjtools:1.8.9
org.aspectj:aspectjweaver:1.8.9
org.springframework:spring-context:4.3.10.RELEASE

При запуске получаю:
авг 20, 2017 12:56:24 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [META-INF/spring/app-context-xml.xml]
авг 20, 2017 12:56:25 PM org.springframework.context.support.GenericXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.GenericXmlApplicationContext@254989ff: startup date [Sun Aug 20 12:56:25 MSK 2017]; root of context hierarchy
авг 20, 2017 12:56:25 PM org.springframework.context.support.GenericXmlApplicationContext refresh
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.spring.aop.MessageWrapper] for bean with name 'aspect' defined in class path resource [META-INF/spring/app-context-xml.xml]; nested exception is java.lang.ClassNotFoundException: com.spring.aop.MessageWrapper
Exception in thread "main" org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.spring.aop.MessageWrapper] for bean with name 'aspect' defined in class path resource [META-INF/spring/app-context-xml.xml]; nested exception is java.lang.ClassNotFoundException: com.spring.aop.MessageWrapper


Делаю в IntellijIdea Ultimate 2017.2.2

Ладно несколько раз до этого забил на то что не запускается и решил, что потом к этому вернусь, но тут уже достало.

В чем может быть проблема?
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508131
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.

<?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 http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    <aop:aspectj-autoproxy/>
    <bean id="aspect" class="com.spring.aop.MessageWrapper"
          factory-method="aspectOf">
        <property name="prefix">
            <value>The Prefix</value>
        </property>
        <property name="suffix">
            <value>The Suffix</value>
        </property>
    </bean>
</beans>
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508190
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman, спасибо, ты прав, действительно вот эта строка
<aop:aspectj-autoproxy/>
была вставлена когда начался перебор вариантов. И соответствующие пути появились выше.
Но дело в том, что изначально не было <aop:aspectj-autoproxy/>...
И если убрать - результат тот же.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508196
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,

Кстати, можно задать вопрос авторам книги.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508307
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nebo, в данном я склоняюсь к тому что я что-то не так делаю
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508490
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,

Похоже проблема в зависимостях.
Погуглите в maven-репозитории какую библиотеку надо подключить с классам com.spring.aop.MessageWrapper.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508493
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulПогуглите в maven-репозитории какую библиотеку надо подключить с классам com.spring.aop.MessageWrapper.
Это класс из книги, а не из Spring. Выбор имени пакета, конечно, дебильный.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508497
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousNebo, в данном я склоняюсь к тому что я что-то не так делаю
Обычно, дело именно в книгах. Примеры лучше брать из актуальных статей, готовых проектов и мануала, а книги использовать только как структурированые знания.

Но, судя по ошибке, у вас вообще что-то с настройкой проекта в IDE. Spring же вашего класса не нашел. Может вы в пакеты не так разложили?
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508526
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczImperousNebo, в данном я склоняюсь к тому что я что-то не так делаю
Обычно, дело именно в книгах. Примеры лучше брать из актуальных статей, готовых проектов и мануала, а книги использовать только как структурированые знания.

Но, судя по ошибке, у вас вообще что-то с настройкой проекта в IDE. Spring же вашего класса не нашел. Может вы в пакеты не так разложили?
все лежит в одном пакете .
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508527
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczmad_nazgulПогуглите в maven-репозитории какую библиотеку надо подключить с классам com.spring.aop.MessageWrapper.
Это класс из книги, а не из Spring. Выбор имени пакета, конечно, дебильный.
да, согласен. но мне для "игрушек"
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508533
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,

А что в книжке пишут про копиляцию .aj файлов? Она у вас во время сборки планируется или во время загрузки? Если во время сборки, то в мавене ничего не написано про aspectj компиляцию. А если после запуска, то я вообще фиг его знает как Spring вдруг должен догадаться скомпилировать ваш .aj файл. В спринг конфиге об этом тоже ни слова.

https://stackoverflow.com/questions/24121117/aspectj-with-spring-aop-configuration-xml

Ну, и зачем вы это изучаете не понятно, если сейчас аспекты на Java пишутся. Дался вам этот AspectJ в голом виде?

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508606
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczImperous,

А что в книжке пишут про копиляцию .aj файлов? Она у вас во время сборки планируется или во время загрузки? Если во время сборки, то в мавене ничего не написано про aspectj компиляцию. А если после запуска, то я вообще фиг его знает как Spring вдруг должен догадаться скомпилировать ваш .aj файл. В спринг конфиге об этом тоже ни слова.

https://stackoverflow.com/questions/24121117/aspectj-with-spring-aop-configuration-xml

Ну, и зачем вы это изучаете не понятно, если сейчас аспекты на Java пишутся. Дался вам этот AspectJ в голом виде?

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html
та я ж только знакомлюсь с джавой и спрингом, еще не знаю что нужно и что нет, материал стараюсь понимать.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508628
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperousта я ж только знакомлюсь с джавой и спрингом, еще не знаю что нужно и что нет, материал стараюсь понимать.
Ну, так это. Пропустите аспекты. АОП штука полезная, но для начала проживете без неё. К тому же Spring её реализует прозрачно без надобности работать с AspectJ напрямую.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508631
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь пишут.

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html
Weaving: linking aspects with other application types or objects to create an advised object. This can be done at compile time (using the AspectJ compiler, for example), load time, or at runtime. Spring AOP, like other pure Java AOP frameworks, performs weaving at runtime.

Вариант "плетения" для девочек.

https://eclipse.org/aspectj/doc/released/devguide/ltw.html
The AspectJ weaver takes class files as input and produces class files as output. The weaving process itself can take place at one of three different times: compile-time, post-compile time, and load-time. The class files produced by the weaving process (and hence the run-time behaviour of an application) are the same regardless of the approach chosen.

А тут - для суровых поцонов. А также для сторонников Не-Спринга.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508640
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton https://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html
Weaving: linking aspects with other application types or objects to create an advised object. This can be done at compile time (using the AspectJ compiler, for example), load time, or at runtime. Spring AOP, like other pure Java AOP frameworks, performs weaving at runtime. .
У нас какие-то разные мануалы. Во-первых это написано про Spring AOP, который на pure Java без .aj файлов.
Там же написано, что можно использовать и AspectJ compiler и евойного агента, если очень хочется. Спринг умеет с этим интегрироваться. Но у автора темы нет ни того, ни другого.

maytonА тут - для суровых поцонов. А также для сторонников Не-Спринга.
Можно и со Spring голый AspectJ подружить. Вот только зачем топикастеру такой хардкор, если он ещё и Java-то не до конца освоил.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508654
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люто и бешено плюсую по поводу примеров из книг. Девять из десяти просто у вас не скомпилируются.

А те что соберутся не факт что заработают. Авторы гонят отсебятину и творческие порывы которые никто
В редакции не проверял.

Очевидно что в книге главное это текст а не код.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508762
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЛюто и бешено плюсую по поводу примеров из книг. Девять из десяти просто у вас не скомпилируются.

А те что соберутся не факт что заработают. Авторы гонят отсебятину и творческие порывы которые никто
В редакции не проверял.

Очевидно что в книге главное это текст а не код.

Ну в последнее время идет тенденция выкладывать код на github, так что это актуально скорее для книг ранее 2014-2015 годов
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39508935
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никmaytonЛюто и бешено плюсую по поводу примеров из книг. Девять из десяти просто у вас не скомпилируются.

А те что соберутся не факт что заработают. Авторы гонят отсебятину и творческие порывы которые никто
В редакции не проверял.

Очевидно что в книге главное это текст а не код.

Ну в последнее время идет тенденция выкладывать код на github, так что это актуально скорее для книг ранее 2014-2015 годов
Это было-бы вообще идеально. А у меня пока ни один пример из Hibernate in Action нелетает. Но
это off. Я лучше отдельным топиком напишу.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39509064
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никmaytonЛюто и бешено плюсую по поводу примеров из книг. Девять из десяти просто у вас не скомпилируются.

А те что соберутся не факт что заработают. Авторы гонят отсебятину и творческие порывы которые никто
В редакции не проверял.

Очевидно что в книге главное это текст а не код.

Ну в последнее время идет тенденция выкладывать код на github, так что это актуально скорее для книг ранее 2014-2015 годов

гитхаб это конечно быстро и удобно, но я за "набитие руки", мне нравится и лучше усваивается когда я сам пишу.
...
Рейтинг: 0 / 0
AspectJ или устаревший материал (Spring AOP)
    #39513467
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кому полезно будет.
Ссылка на книгу Spring 4 для профессионалов, 4-е издание+ файлы примеры
Я качал с депозита, на турбобите вроде долхлая ссыла.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / AspectJ или устаревший материал (Spring AOP)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]