当前位置: 首页 > news >正文

动态电子商务网站建设报告谷歌是如何运营的

动态电子商务网站建设报告,谷歌是如何运营的,不会建网站怎么赚钱,django做的网站举例目录1.核心概念AOP(Aspect Oriented Programming)面向切面编程:一种编程范式,指导开发者如何组织程序结构作用:在不惊动原始设计的基础上为其进行功能增强。连接点(JoinPoint):程序执行过程中的任意位置切入点(PointCut)&#xff…

目录

1.核心概念

AOP(Aspect Oriented Programming)面向切面编程:一种编程范式,指导开发者如何组织程序结构

作用:在不惊动原始设计的基础上为其进行功能增强。

连接点(JoinPoint):程序执行过程中的任意位置

切入点(PointCut):匹配连接点的式子

通知(Advice):在切入点执行的操作

切面(Aspect):描述通知与切入点的对应关系

2.小案例

目标:在接口执行前输出当前系统时间。

①在pom.xml中导入依赖spring-context、aspectjweaver

②定义dao接口与实现类

/src/main/java/com/itheima/dao/BookDao.java

package com.itheima.dao;public interface BookDao {public void save();public void update();
}

/src/main/java/com/itheima/dao/impl/BookDaoImpl.java

package com.itheima.dao.Impl;
import com.itheima.dao.BookDao;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {public void save() {System.out.println(System.currentTimeMillis());System.out.println("book dao save ...");}public void update(){System.out.println("book dao update ...");}
}

③定义通知类

/src/main/java/com/itheima/aop/MyAdvice.java

package com.itheima.aop;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;//通知类必须配置成Spring管理的bean
@Component
//设置当前类为切面类类
@Aspect
public class MyAdvice {//设置切入点,要求配置在方法上方@Pointcut("execution(void com.itheima.dao.BookDao.update())")private void pt(){}//设置在切入点pt()的前面运行当前操作(前置通知)@Before("pt()")public void method(){System.out.println(System.currentTimeMillis());}
}

/src/main/java/com/itheima/config/SpringConfig.java

package com.itheima.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;@Configuration
@ComponentScan("com.itheima")
//开启注解开发AOP功能
@EnableAspectJAutoProxy
public class SpringConfig {
}

④测试

/src/main/java/com/itheima/App.java

package com.itheima;
import com.itheima.config.SpringConfig;
import com.itheima.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App {public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao = ctx.getBean(BookDao.class);bookDao.update();}
}

3.AOP工作流程

  • Spring容器启动

  • 读取所有切面配置中的切入点

  • 初始化bean,判定bean对应类中的方法是否匹配到任意切入点

  • 匹配失败,获取的bean还是原来的bean

  • 匹配成功,获取的bean是原始对象的代理对象,从而不仅能运行原来的一些方法,还能运行增强的内容。

4.通知类型

前置通知

后置通知

环绕通知(重点)

返回后通知

抛出异常后通知

5.AOP通知获取数据

①获取切入点方法的参数

  • JoinPoint:使用于前置、后置、返回后、抛出异常后通知

  • ProceedJoinPoint:适用于环绕通知

②获取切入点方法的返回值

  • 返回后通知

  • 环绕通知

③获取切入点方法的运行异常信息

  • 抛出异常后通知

  • 环绕通知

pom.xml和/src/main/java/com/itheima/config/SpringConfig.java同上面的案例

/src/main/java/com/itheima/dao/BookDao.java

package com.itheima.dao;public interface BookDao {public String findName(int id);
}

/src/main/java/com/itheima/dao/impl/BookDaoImpl.java

package com.itheima.dao.impl;import com.itheima.dao.BookDao;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {public String findName(int id) {System.out.println("id:"+id);return "fyx";}
}

/src/main/java/com/itheima/aop/MyAdvice.java

package com.itheima.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import java.util.Arrays;//通知类必须配置成Spring管理的bean
@Component
//设置当前类为切面类类
@Aspect
public class MyAdvice {//设置切入点,要求配置在方法上方@Pointcut("execution(* com.itheima.dao.BookDao.findName(..))")private void pt(){}//设置在切入点pt()的前面运行当前操作(前置通知)@Before("pt()")public void before(JoinPoint jp) {Object[] args = jp.getArgs();System.out.println(Arrays.toString(args));System.out.println("before advice ...");}// @After("pt()")public void after(JoinPoint jp) {Object[] args = jp.getArgs();System.out.println(Arrays.toString(args));System.out.println("after advice ...");}//@Around("pt()")public Object around(ProceedingJoinPoint pjp) throws Throwable {Object[] args = pjp.getArgs();System.out.println(Arrays.toString(args));args[0] = 666;Object ret = pjp.proceed(args); // 获取参数处理之后再发送回去return ret;}//@AfterReturning(value="pt()",returning = "ret")public void afterReturning(String ret) {System.out.println("afterReturning advice " + ret);}//@AfterThrowing(value="pt()",throwing = "t")public void afterThrowing(Throwable t) {System.out.println("afterThrowing advice " + t);}
}

/src/main/java/com/itheima/App.java

package com.itheima;import com.itheima.config.SpringConfig;
import com.itheima.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App {public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao = ctx.getBean(BookDao.class);String name = bookDao.findName(100);System.out.println(name);}
}

6.AOP补充案例

需求:网盘分享链接输入密码时处理尾部多余空格

pom.xml和/src/main/java/com/itheima/config/SpringConfig.java同上面的案例

/src/main/java/com/itheima/dao/ResourcesDao.java

package com.itheima.dao;public interface ResourcesDao {boolean readResources(String url, String password);
}

/src/main/java/com/itheima/dao/impl/ResourcesDaoImpl.java

package com.itheima.dao.impl;import com.itheima.dao.ResourcesDao;
import org.springframework.stereotype.Repository;@Repository
public class ResourcesDaoImpl implements ResourcesDao {public boolean readResources(String url, String password) {// 模拟校验return password.equals("root");}
}

/src/main/java/com/itheima/service/ResourcesService.java

package com.itheima.service;public interface ResourcesService {public boolean openURL(String url, String password);
}

/src/main/java/com/itheima/service/impl/ResourcesServiceImpl.java

package com.itheima.service.impl;import com.itheima.dao.ResourcesDao;
import com.itheima.service.ResourcesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class ResourcesServiceImpl implements ResourcesService {@Autowiredprivate ResourcesDao resourcesDao;@Overridepublic boolean openURL(String url, String password) {return resourcesDao.readResources(url, password);}
}

/src/main/java/com/itheima/aop/DateAdvice.java

package com.itheima.aop;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;@Component
@Aspect
public class DateAdvice {//设置切入点,要求配置在方法上方@Pointcut("execution(boolean com.itheima.service.*Service.openURL(*,*))")private void servicePt(){}@Around("DateAdvice.servicePt()")public Object around(ProceedingJoinPoint pjp) throws Throwable {Object[] args = pjp.getArgs();for(int i = 0; i < args.length; i++) {// 判断参数是不是字符串if(args[i].getClass().equals(String.class)) {args[i] = args[i].toString().trim();}}Object ret = pjp.proceed(args);return ret;}
}

/src/main/java/com/itheima/App.java

package com.itheima;import com.itheima.config.SpringConfig;
import com.itheima.service.ResourcesService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App {public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);ResourcesService resourcesService = ctx.getBean(ResourcesService.class);boolean flag = resourcesService.openURL("https://pan.baidu.com/hh", "root ");System.out.println(flag);}
}

http://www.mmbaike.com/news/50648.html

相关文章:

  • 物流公司网站建设方案百度网站优化
  • 网站后期维护方案百度 官网
  • 建造网站 备案优化网站的意思
  • 中信建设 官方网站重庆森林电影
  • 马来西亚网站后缀网络营销软件站
  • 长沙手机网站建设哪些内容my63777免费域名查询
  • 阿里云个人网站建设百度seo优化按年收费
  • 做网站能改吗成都关键词优化报价
  • 做网站打广告图片素材太原seo计费管理
  • 东西湖区城乡建设局网站品牌营销策略有哪些方法
  • 海洋网站建设百度权重
  • 广西网站建设智能优化静态网页设计与制作
  • seo做的不好的网站有哪些青岛seo服务哪家好
  • 网站做微信公众号站长是什么职位
  • 网站上传后东莞网站制作
  • 网站推广的案例2024年新闻摘抄
  • 网盘搜索网站 怎么做长沙网站包年优化
  • 网站开发实例 csdnseo核心技术排名
  • 去年做啥网站能致富seo信息是什么
  • 网站风格的设计网址怎么注册
  • 商务网站建设的基本步骤全媒体广告代理加盟靠谱吗
  • 手机网站知识沈阳seo关键字优化
  • 网页应用开发福建百度seo排名点击软件
  • 有几个网站可以做代发的网络营销渠道
  • 如何做视频卖给网站百度站点
  • 做网站代理商好赚吗?电子商务平台有哪些
  • 网站建设公司 华艺网络子域名查询工具
  • mvc 门户网站开发框架网站排名软件推荐
  • wordpress 后台 重定向循环湖南企业竞价优化首选
  • 欧洲外贸网站有哪些广告公司职位