在 Spring 中,外观模式主要应用在各种模板类中,比如 JdbcTemplate 和 RestTemplate。外观模式的目的是将复杂的系统或接口封装起来,向外提供简单的接口,使得客户端能够更容易地使用这些功能。
下面是一个使用外观模式的示例代码:
public class JdbcTemplate {
private DataSource dataSource;
public JdbcTemplate(DataSource dataSource) {
this.dataSource = dataSource;
}
public void execute(String sql) {
Connection conn = null;
Statement stmt = null;
try {
conn = dataSource.getConnection();
stmt = conn.createStatement();
stmt.execute(sql);
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
在上面的代码中,JdbcTemplate 是一个外观类,它封装了数据库操作的复杂性。它的 execute 方法接收一个 SQL 语句作为参数,并将其执行。在方法内部,它通过 DataSource 对象获取 Connection 对象,再通过 Connection 对象获取 Statement 对象,并最终执行 SQL 语句。在方法结束时,它还会释放资源,确保数据库连接不会被泄露。
在这个示例中,JdbcTemplate 就是一个典型的外观类。它将数据库操作的细节封装起来,向外提供了一个简单的接口。客户端只需要传入 SQL 语句,就能够执行数据库操作。如果不使用 JdbcTemplate,客户端需要自己获取数据库连接,创建 Statement 对象,执行 SQL 语句,还要注意资源的释放等一系列复杂的操作,使用起来就很麻烦。而使用 JdbcTemplate,客户端只需要关注 SQL 语句本身,就能够轻松地完成数据库操作。