这是我的连接数据库的类:
@Component
@Scope("prototype")
public class DaoConfig {
private static String url = "jdbc:sqlserver://localhost:1433;DatabaseName=BBS2.0";
private static String user = "sa";
private static String password = "sasa";
private static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
public static Connection conn ;
public static Statement sm ;
public static ResultSet rs;
static {
try {
Class.forName(driver);
conn = getConnnection();
sm = conn.createStatement();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnnection() {
try {
return DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
我的dao类继承这个类,并且用的都是sql语句,下面是其中一个方法:
public Post getPost(int postId) {
String sql = "select * from post where postId = "+postId+"";
try {
rs = sm.executeQuery(sql);
rs.next();
Post post = new Post();
post.setPostId(postId);
post.setPosttitle(rs.getString(2));
post.setPostContent(rs.getString(3));
post.setParentId(rs.getInt(4));
post.setPostDate(rs.getTimestamp(5));
return post;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException();
}
}
我想用aop将每个dao类最后加上close语句
@After("daoClose()")
public void after() {
System.out.println("000000000000000000000");
try {
if(daoConfig.rs != null) {
daoConfig.rs.close();
}
if(daoConfig.sm != null) {
daoConfig.sm.close();
}
if(daoConfig.conn != null) {
daoConfig.conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
结果确报异常:
com.microsoft.sqlserver.jdbc.SQLServerException: 该语句已关闭。
相关推荐
1. **定义特性(Attribute)**:创建一个自定义特性,用于标记那些可能抛出异常的方法。例如,可以创建一个名为`[HandleException]`的特性,将其应用于可能抛出异常的方法上。 ```csharp [AttributeUsage...
3.处理日志时,需要在每一个try-catch块包含一些处理代码,有时候异常处理的代码比正常执行代码还多,污染正常执行代码。 4.同样类型异常有不同的处理方式,使最终的处理变得复杂。 5.接口抛出异常,破坏封装,打破...
Spring.NET是中国开源社区基于.NET Framework实现的一个轻量级企业级应用框架,它借鉴了Java平台上的Spring框架,为.NET开发者提供了强大的依赖注入(Dependency Injection,DI)和面向方面编程(Aspect-Oriented ...
例如,我们可以定义一个切面,包含一个`@AfterThrowing`注解的方法,这个方法将在目标方法抛出异常后执行。`@AfterThrowing`注解可以指定要拦截的方法签名、异常类型,甚至可以传递抛出的异常对象给通知方法。 ```...
最近一直在研究怎么更好更便捷的来保存异常,传统的log4j都是对每个类进行异常每个控制层的方法都有些try,catch感觉很麻烦,于是,自己用AOP和注解的方式结合log4j来实现统一的异常保存,废话不多说,上传项目。
6. **目标对象(Target Object)**:被一个或多个切面通知的对象,通常是被代理的对象。 7. **AOP代理(AOP Proxy)**:由AOP框架创建的对象,负责执行切面的逻辑,如JDK动态代理或CGLIB代理。 8. **织入(Weaving)**:...
标题 "一个简单的AOP demo" 暗示我们将探讨面向切面编程(Aspect-Oriented Programming,简称AOP)的基本概念以及如何通过一个简单的实例来理解它。在软件开发中,AOP是一种编程范式,它允许我们分离关注点,比如...
对于提供的文件名"mySpring",可能是一个包含Spring配置或示例代码的文件,其中可能包含了关于如何实现Spring AOP的具体步骤和示例。通过查看这个文件,我们可以更深入地理解Spring AOP的实际应用和配置。在实际开发...
例如,可能有一个`GlobalExceptionHandler`类处理全局异常,一个`MyAspect`类实现AOP切面,以及一些配置类如`RedisConfig`用于设置和初始化Redis连接。此外,业务逻辑代码中可能会使用`@Cacheable`等注解,以及`...
**Android-Jet-AOP:一个Android AOP框架详解** Android应用程序的开发过程中,代码的组织和维护是一项重要的任务。为了提高代码的可读性、可维护性和模块化,开发者经常采用设计模式和特定的编程技术。其中,面向...
例如,在上述代码中的`PersonProxy`类就是一个切面,它定义了`before()`和`after()`方法作为通知。 2. **切点(Pointcut)**:切点是程序执行流程中的特定位置,比如某个方法的调用。在示例代码中,`@Before(...
aopalliance是一个Java库,它提供了一个统一的接口,使得不同的AOP框架(如AspectJ、Spring AOP等)能够相互协作。这个库是AOP在Java世界中的一个关键组件,因为它的API成为了多个AOP实现之间的标准。 在Java应用中...
在实际开发中,版本不匹配经常会导致类加载错误、运行时异常或者功能缺失,所以一个妥善打包的AOP环境可以大大提升开发效率。 标签“aop环境”进一步明确了这个压缩包与AOP开发相关,可能包含以下组件: 1. **...
4. **编写测试方法**:在测试类中,创建一个会抛出异常的方法,并使用断言确保AOP通知被正确执行。 总结一下,"aop+exception"的测试代码主要涉及Spring AOP中的异常处理,可能涵盖了定义切面、通知、事务管理和...
AOP Alliance是一个接口集,定义了AOP框架之间的通用API,使得不同的AOP实现能够互操作。它定义了一些基础的切面接口,如Advisor(顾问)、Pointcut(切点)和Advice(通知),这些接口在不同的AOP框架中通用,有助...
它可以是一个或多个方法、类或特定的执行条件。切点表达式用于定义这些条件,通常使用正则表达式或专门的语法。 4. **连接点(Join Point)**:程序执行中的特定点,如方法调用或异常抛出。连接点是可能插入通知的...
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要模块,它通过提供声明式的方式来实现面向切面编程,从而简化了应用程序的开发和维护。在Spring AOP中,我们无需深入到每个...
例如,我们可以定义一个切面来处理所有数据库操作的事务,这样无需在每个业务方法中显式调用开始和提交事务,只需在切面中配置事务规则即可。 `aop-jar`这个压缩包可能包含了Spring AOP的实现类、接口、以及其他...
在实际开发中,公共异常处理是一个常见的AOP应用场景,用于统一处理可能出现的异常,提高代码的可读性和可维护性。在"Java AOP 公共异常处理,一个没有try的项目"中,我们可以探讨如何利用AOP实现优雅的异常管理,...
本次分享的"一个简单aop分享.zip"可能包含了一次关于如何在Spring框架中使用AOP进行编程的讲解。 首先,理解AOP的基本概念非常重要。切面(Aspect)是关注点的模块化,它封装了跨越多个对象的行为或责任。通知...