【发布时间】:2018-05-29 11:17:44
【问题描述】:
此执行前代码不起作用?它返回null,因为datap 不是从my_int_it_method() 方法设置的。 @Before 应该已经执行 my_int_it_method() 然后只有 send() 可以工作。
AOP 代码在这里:
package org.main;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class data {
Connection con = new db_connect().connect();
String datap;
String test;
@Before("execution(public String send())")
public void my_int_it_method() {
String query = "Select * from shapes where shape_id=?";
PreparedStatement pstmt;
try {
pstmt = con.prepareStatement(query);
pstmt.setInt(1, 2);
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
datap=rs.getString("type");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public String send() {
return datap;
}
}
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
<aop:aspectj-autoproxy/>
<bean name = "data" class="org.main.data" autowire="byName"/>
</beans>
这里的执行代码:
package org.main;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("Spring.xml");
data dataa = ctx.getBean("data",data.class);
dataa.send();
}
}
【问题讨论】:
标签: java spring aop aspectj spring-aop