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

Штудирую "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
20.08.2017, 20:15
    #39508131
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
Код: 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
20.08.2017, 23:46
    #39508190
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
Usman, спасибо, ты прав, действительно вот эта строка
<aop:aspectj-autoproxy/>
была вставлена когда начался перебор вариантов. И соответствующие пути появились выше.
Но дело в том, что изначально не было <aop:aspectj-autoproxy/>...
И если убрать - результат тот же.
...
Рейтинг: 0 / 0
21.08.2017, 00:23
    #39508196
Nebo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
Imperous,

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

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

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

Но, судя по ошибке, у вас вообще что-то с настройкой проекта в IDE. Spring же вашего класса не нашел. Может вы в пакеты не так разложили?
все лежит в одном пакете .
...
Рейтинг: 0 / 0
21.08.2017, 17:11
    #39508527
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
Blazkowiczmad_nazgulПогуглите в maven-репозитории какую библиотеку надо подключить с классам com.spring.aop.MessageWrapper.
Это класс из книги, а не из Spring. Выбор имени пакета, конечно, дебильный.
да, согласен. но мне для "игрушек"
...
Рейтинг: 0 / 0
21.08.2017, 17:33
    #39508533
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
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
22.08.2017, 00:04
    #39508606
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
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
22.08.2017, 08:22
    #39508628
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
Imperousта я ж только знакомлюсь с джавой и спрингом, еще не знаю что нужно и что нет, материал стараюсь понимать.
Ну, так это. Пропустите аспекты. АОП штука полезная, но для начала проживете без неё. К тому же Spring её реализует прозрачно без надобности работать с AspectJ напрямую.
...
Рейтинг: 0 / 0
22.08.2017, 08:42
    #39508631
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
Здесь пишут.

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
22.08.2017, 09:05
    #39508640
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
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
22.08.2017, 09:54
    #39508654
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AspectJ или устаревший материал (Spring AOP)
Люто и бешено плюсую по поводу примеров из книг. Девять из десяти просто у вас не скомпилируются.

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

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

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

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

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

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

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

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

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

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

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

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


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