Spring切面编程

原创 2018年04月15日 18:09:31

    依赖注入能够让相互协作的软件组件保持松散耦合,而面向切面编程AOP允许你把遍布应用各处的功能分离出来形成可重用的组件。
    面向切面编程往往被定义为促使软件系统实现关切点的分离的一项技术。系统由很多不同的组件构成,每一个组件各负责一块特定的功能。除了实现自身核心的功能之外,这些组件还经常承担这额外的职责。诸如日志,事务管理和安全的系统服务经常融入到自身具有核心业务逻辑的组件中去,这些系统服务通常被称为横切关注点,因为他们会跨越系统的很多个组件中。
     如何将这些关注点分散到多个组件中去,代码将会带来双重的复杂性。
1:实现系统关注点功能的代码将会重复出现在多个组件中,这意味这如果你要改变这些关注点的逻辑,必须修改各个模块中的相关实现。即使你把这些关注点抽象为一个独立的模块,其他模块只是调用他的方法,但方法的调用还是会重复出现在各个模块中。
2:组件会因为那些与自身核心业务无关的代码而变得混乱。一个向地址簿增加地址条目的方法应该只关注如何增加地址,而不应该关注他是不是安全的或者是否需要支持事务。
    AOP能够使这些服务模块化,并以声明的方式将他们应用到他们需要影响的组件中去。所造成的结果就是这些组件会具有更高的内聚性并且会更加关注自身的业务,完全不需要了解涉及系统服务所带来的复杂性。AOP能够确保POJO的简单性。
    我们可以把切面想象为覆盖在很多组件之上的一个外壳。应用是由那些实现各自业务功能的模块组成的。借助AOP,可以使用各种功能层去包裹核心业务层,这些层以声明的方式灵活的应用到系统中,你的核心应用甚至根本不知道他们的存在。这是一个强大的理念,可以将安全,事务和日志关切点和核心业务逻辑相分离。
    接下来我们看一个样板代码案例。通常为了实现通用的和简单的任务,我们不得不一遍一遍的重复写这样的代码。
当然,这样的因素基本上是因为使用JAVAAPI而导致的样板式代码。
package com.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnectData {

	public static void main(String[] args) {
		String URL = "jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
		String USER = "root";
		String PASSWORD = "tiger";
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			// 1.加载驱动程序
			Class.forName("com.mysql.jdbc.Driver");
			// 2.获得数据库链接
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			// 3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
			st = conn.createStatement();
			rs = st.executeQuery("select * from user");
			// 4.处理数据库的返回结果(使用ResultSet类)
			while (rs.next()) {
				System.out.println(rs.getString("user_name") + " " + rs.getString("user_password"));
			}
			// 关闭资源
			rs.close();
			st.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}
为了实现一个简单的查询,我们需要穿件数据库连接,创建语句,如果是非查询操作,还需要事务控制,并且还要捕捉SQL异常,虽然即使捕捉后也做不了什么事情。最后还要关闭数据库连接。
Spring旨在通过模板封装来消除样板式代码,Spring的JdbcTemplate使得执行数据库操作时,避免了传统的JDBC样板代码成为了可能。

版权声明:转载请注明出处 https://blog.csdn.net/tangmingxin0529/article/details/79951446

在VC中实现程序在启动时隐藏

    最近经常见论坛上有人问,程序在启动时如何隐藏。以下是我总结的一些方法,欢迎大家讨论,找出更好的方法。    对于这类问题,大家最容易想到的可能就是在PreCreateWindow中添加cs.s...
  • AttaBoy
  • AttaBoy
  • 2002-03-03 09:18:00
  • 1205

跟着柴毛毛学Spring(4)——面向切面编程![这里写图片描述](http://img.blog.csdn.net/20171031111402095)

面向切面编程简介1. 什么是面向切面编程?  面向切面编程是Spring的第二大特性,它能将一个函数中非主体但有很必要的代码封装到一个单独的类中,在程序运行的时候再把它们插入到函数中。这样能使程序猿只...
  • u010425776
  • u010425776
  • 2016-04-02 15:39:37
  • 1813

Spring之AOP面向切面编程实现(一)

实现方式:基于配置XML和基于注解实现。场景:一个手机进货系统,一旦要进货(或出货),要提前记录进货时间,进货完毕后,还要提醒其它人进行验货。 分析:3步走,1,操作进货(或出货)的方法的时候,先记录...
  • u013410747
  • u013410747
  • 2016-07-23 12:52:29
  • 893

Spring面向切面编程的三种方式以及常用相关案例总结

Spring面向切面编程 ================================================== spring面向切面编程的方法之一:实现接口方式 1.执行前增强:...
  • lixiao1048
  • lixiao1048
  • 2016-06-24 18:03:30
  • 2672

Spring的AOP切面编程

Spring的AOP切面编程一:面向切面编程含义 在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程 二:AOP的基本概念 1)通知(Advice):织入到目标类...
  • qin_water
  • qin_water
  • 2016-07-18 11:05:19
  • 1721

面向切面编程spring AoP(自定义注解)

spring AoP自定义注解
  • d57893269
  • d57893269
  • 2016-09-22 15:44:56
  • 444

使用Spring进行切面(AOP)编程

使用Spring进行切面(AOP)编程 一、   AOP理论 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和...
  • shenlei19911210
  • shenlei19911210
  • 2015-10-22 19:54:57
  • 1719

项目中如何体现Spring中的切面编程

面向切面编程:主要是横切一个关注点,
  • u012407438
  • u012407438
  • 2014-09-28 10:43:08
  • 440

关于spring的aop(切面编程)配置总结

spring的aop配置有三种方式:   1.全注解   2.半注解半配置(自动配置,不需要手动配置)   3.无注解(全配置控制) 注:以上三种说法都是我自己说的,没有权威书籍认证的,该文写...
  • IT_COOKIE_SAM
  • IT_COOKIE_SAM
  • 2017-02-25 22:55:47
  • 311

面向切面编程的介绍和使用(Spring框架)

Spring框架整理第二发,AOP的介绍和使用。 AOP概述 AOP:aspect oriented programming:面向切面编程 OOP:Object Oriente...
  • wangligong
  • wangligong
  • 2016-11-18 23:25:11
  • 8377
收藏助手
不良信息举报
您举报文章:Spring切面编程
举报原因:
原因补充:

(最多只允许输入30个字)