AOP:(面向切面编程):
AOP为Aspect Oriented Programming的缩写,以为面向切面编程,通过预编译方式和运行期间动动态实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分隔离,从而使得业务逻辑各部分降低耦合度降低,提高程序的可重复性,同时提高开发的效率。
AOP 是OOP的补充和完善。AOP利用一种称为“横切”技术,破解开封装的对象内部,并将那些影响了多个公共胸围封装到一个可重用模板,并将其名为“Aspect”,几方面,所为“方面”,简单地说,就是讲那些业务无关,为业务模板快所共同调用的逻辑或责任封装,便于减少系统重复代码,降低模块间的耦合度,并于未来可操作和维护。
- Aspect(切面):在实际应用中,切面通常是指封装用于横向常茹系统的功能(如事物、日志等)类。
- Joinpint(连接点):在程序执行过程的某阶段点,它实际上时对象的一个操作,列如方法调用或异常的抛出。
- pointcut(切入点):是指切面与程序的交叉点,需要处理的连接点。通常在程序中切入点指的是类或者方法名,如某个通知应用到所有以add开头的方法中,那么所有满足者以规则的方法都是切入点。
- Advice(通知 / 增强处理):AOP 框架在特点的切点执行的增强处理,即在定义好的切入处要执行的程序代码,切面类中的方法,它是切面的具体实现
- Target Object(目标对象):是指所有的被通知对象,也称为被增强对象。如果AOP矿建采用的是动态的AOP实现,那么该对象就是一个被代理对象
- Proxy(代理):将通知应用到目标对象之后,被动态创建的对象。
- Weaving(织入):将切面代码插入到目标对象上,从而生成代理对象的过程。
创建bean的方法有两种
第一种是导jar。第二种建立maven项目;
建立这两种方法之前准备工作:下载jar
Spring:网址:https://spring.io/propjects/
网址:https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Artifacts
选择要下载的版本即可下载了
创建Spring的第一种方式
找到刚下载的jar包进行解压:
选择下面的四个包复制到l ib 里:
还需要一个包:网址:http://commons.apache.org/proper/commons-logging/download_logging.cgi
下载好粘贴复制到lib里
着重在第二个Spring的方法:
在pom.xml文件里写jar :代码如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring_loc_maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
配置约束文件:
约束模板信息:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
应用刚建立的模板:
写完所有内容建立的文件如下图所示:
bean.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--将对象的创建(new的那个环节)交托给Spring来管理-->
<!--bean中的id 是一个唯一标识 -->
<bean id="userService" class="cn.javabs.service.impl.UserServiceImpl"></bean>
<!-- id 相当于键 class 相当于 值-->
<bean id="userDao" class="cn.javabs.dao.impl.UserDaoImpl"></bean>
</beans>
UserDaoImpl 类
package cn.javabs.dao.impl;
import cn.javabs.dao.UserDao;
public class UserDaoImpl implements UserDao {
public void addUser() {
System.out.println("用户提交....");
}
}
UserDao 接口
package cn.javabs.dao;
public interface UserDao {
void addUser();
}
UserServiceImpl 类
package cn.javabs.service.impl;
import cn.javabs.dao.UserDao;
import cn.javabs.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void userAdd() {
// userDao.addUser();
}
}
UserService 接口
package cn.javabs.service;
public interface UserService {
void userAdd();
}
MyTest
package cn.javabs.test;
import cn.javabs.service.UserService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
@Test
public void testfun(){
// 获取配置文件
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
UserService us = (UserService) ac.getBean("userService");
Object ud = ac.getBean("userDao");
System.out.println(us);
System.out.println(ud);
us.userAdd();
}
}
运行的结果:
熟悉错误:
改后的: