The prefix "aop" for element "aop:aspectj-autoproxy" is not bound.

來源:互聯網
上載者:User

標籤:

       在使用spring  aop的時候報錯了:The prefix "aop" for element "aop:aspectj-autoproxy" is not bound.原因是有一些地址沒有被引入:

     

     以下是一個完整配置AOP的例子。

     首先是檔案項目結構:

SpringAOPTest.java

import java.util.ArrayList;import java.util.List;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringAOPTest {    @Test public void interceptorTest(){        ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext-Test.xml");        UserService userService = (UserService)cxt.getBean("userService");        List list =new ArrayList();        list =userService.queryUserList();        System.out.println("sd:"+list.size());    }}

applicationContext-Test.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:aop="http://www.springframework.org/schema/aop"    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"    xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"         xsi:schemaLocation="     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">            <!-- 通過配置的方式,定義bean  -->    <bean id="userService" class="test.UserServiceImpl"></bean>    <!-- 啟用@AspectJ風格的切面聲明 -->     <aop:aspectj-autoproxy/>         <!-- 通過配置的方式,定義日誌切面bean  -->    <bean id="aspetbean" class="test.LogInterceptor"/>   <aop:config>     <aop:aspect id="asp" ref="aspetbean">        <!--定義切入點-->          <aop:pointcut id="mycut" expression="execution(* test.**.*(..))" />        <!-- 第一個*代表所有的傳回值類型 第二個*代表所有的類 第三個*代表類所有方法 最後一個..代表所有的參數。 -->        <!--定義通知(Advice)-->          <aop:before pointcut-ref="mycut"  method="doAccessCheck" /> <!-- 前置通知  -->        <aop:after-returning pointcut-ref="mycut"  method="doAfterReturning" /> <!-- 後置通知  -->        <aop:after-throwing pointcut-ref="mycut"  method="doAfterThrowing" /> <!-- 例外通知  -->        <aop:after pointcut-ref="mycut"  method="doAfter" /> <!-- 最後通知  -->        <aop:around pointcut-ref="mycut"  method="doBasicProfiling" /> <!-- 環繞通知  -->     </aop:aspect>  </aop:config></beans>

LogInterceptor.java

import org.aspectj.lang.ProceedingJoinPoint;/** * 切面  * 例子:日誌記錄 */public class LogInterceptor {        public void doAccessCheck() {        System.out.println("前置通知");    }    public void doAfterReturning() {        System.out.println("後置通知");    }    public void doAfter() {        System.out.println("最終通知");    }    public void doAfterThrowing() {        System.out.println("例外通知");    }    public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {        System.out.println("進入方法");        Object result = pjp.proceed();        System.out.println("退出方法");        return result;    }}

User.java

public class User {    private String id;    private String name;    private String sex;    private int age;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }   }

UserService.java

import java.util.List;public interface UserService {    public User queryUserById(int id);        public List<User> queryUserList();    }

UserServiceImpl.java

import java.util.ArrayList;import java.util.List;public class UserServiceImpl implements UserService {        /**     * 通過id查詢使用者資訊     */    @Override    public User queryUserById(int id) {        System.out.println("=========進入queryUserById方法==========");        User user = null;        if(id==1){            user = new User();            user.setAge(18);            user.setId("1");            user.setName("張三");            user.setSex("1");            }        return user;    }      /**     * 查詢使用者列表     */    @Override    public List<User> queryUserList() {        System.out.println("=========進入queryUserList方法==========");        User user1 = new User();        user1.setAge(18);        user1.setId("1");        user1.setName("張三");        user1.setSex("1");        User user2 = new User();        user2.setAge(18);        user2.setId("1");        user2.setName("張三");        user2.setSex("1");        ArrayList<User> userList = new ArrayList<User>();        userList.add(user1);        userList.add(user2);        return userList;    }}

運行結果:

 

The prefix "aop" for element "aop:aspectj-autoproxy" is not bound.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.