博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVAWEB 一一 Spirng(AOP面向切面)
阅读量:5104 次
发布时间:2019-06-13

本文共 2959 字,大约阅读时间需要 9 分钟。

 

applicationContext.xml

  User.java

package com.aop.entity;public class User {	private int id;	private String username;	private String password;	private String email;	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getUsername() {		return username;	}	public void setUsername(String username) {		this.username = username;	}	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}	public String getEmail() {		return email;	}	public void setEmail(String email) {		this.email = email;	}	public User(int id, String username, String password, String email) {		super();		this.id = id;		this.username = username;		this.password = password;		this.email = email;	}	public User() {		super();		// TODO Auto-generated constructor stub	}	}

  UserService

package com.aop.service;import com.aop.entity.User;public class UserService {	/**	 * @param args	 */	public void addUserService(User user){				System.out.println("业务方法被执行");		System.out.println(user.getUsername());	}}

  ServiceLogging

package com.aop.service;import org.aspectj.lang.ProceedingJoinPoint;public class ServiceLogging {	public void before(){		System.out.println("前置增强处理被执行");	}	public void after(){		System.out.println("最终增强处理被执行");	}	public void afterReturing(){		System.out.println("后置增强处理被执行");	}	public void afterThrowing(){		System.out.println("抛异常增强处理被执行");	}		public void around(ProceedingJoinPoint pjp){		System.out.println("环绕前置增强处理被执行");		try {			pjp.proceed();		} catch (Throwable e) {						e.printStackTrace();		}		System.out.println("环绕后置增强处理被执行");	}}

  AopTest.java

package com.aop.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.aop.entity.User;import com.aop.service.UserService;public class AopTest {	/**	 * @param args	 */	public static void main(String[] args) {		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");		 UserService service=(UserService)ctx.getBean("userService");		 User user = new User(10,"Tom","123456","504177380@qq.com");		 service.addUserService(user);					}}

  

Spring的本质是什么?

1.对象的创建

 new  抽象类 工厂模式 

工厂模式,以及其他模式像抽象工厂,

Builder模式提供的都是创建对象的方法。

这背后体现的都是“封装变化”的思想。 

这些模式只是一些最佳实践而已: 起了一个名称、描述一下解决的问题、使用的范围和场景,在项目中还得自己去编码实现他们。

2.解除依赖

面向接口编程

3.Spring依赖注入

在Java 世界里,如果想描述各种逻辑关系, XML是不二之选

这个xml 挺容易理解的, 但是仅仅有它还不够, 还缺一个解析器(假设叫做XmlAppContext)来解析,处理这个文件,

基本过程是:0. 解析xml, 获取各种元素

      1. 通过Java反射把各个bean 的实例创建起来:

      2. 还是通过Java反射调用 的两个方法:

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

UserService service=(UserService)ctx.getBean("userService");

4.IOC VS DI

转载于:https://www.cnblogs.com/PoeticalJustice/p/7816356.html

你可能感兴趣的文章
.NET设计模式简析
查看>>
SQL高效率语句(二)
查看>>
web优化之-js动态合并 动态压缩 去掉js重复引用 js缓存 js延迟加载
查看>>
201704221048_《ES6模板字符串》
查看>>
【BZOJ-2595】游览计划 斯坦纳树
查看>>
Ubuntu——配置JDK
查看>>
导弹拦截版
查看>>
jzoj5195. 【NOIP2017提高组模拟7.3】A(递推,打表)
查看>>
robot framework接口测试之一-完整的测试用例
查看>>
IOS开发:使用lipo合并armv7,i386,armv7s库文件
查看>>
使用 udev 高效、动态地管理 Linux 设备文件
查看>>
Java8函数之旅(四) --四大函数接口
查看>>
django环境处理
查看>>
记一次企业级爬虫系统升级改造(三):文本分析与数据建模规则化处理
查看>>
javascript window对象
查看>>
Android定制组件之Widget之昨天今天明天
查看>>
JSON
查看>>
JavaScript中的匿名函数及函数的闭包
查看>>
【JMeter】选项-函数助手对话框应用举例
查看>>
2012年实习总结
查看>>