singleton 只有一个实例,也即是单例模式 。
prototype访问一次创建一个实例,相当于new 。
4.值类型的注入实际通过反射field赋值
文章插图
实际通过set方式赋值
文章插图
5.引用类型的注入面试题: @AutoWired和@Resource的区别?
@AutoWired默认以类型进行查找,@Resource默认以名称进行查找
@AutoWired(required=false) + @Qualifier("user") == @Resource(name="user")
其中@Resource注解是jdk1.6后才有的
文章插图
文章插图
6.创建与销毁方法
文章插图
7.spring整合junit测试(spring创建容器)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
文章插图
6、spring中AOP名词解释
JoinPoint(连接点):目标对象中,所有可以增强的方法,就是spring允许你是通知(Advice)的地方,那可就真多了,基本每个方法的前、后(两者都有也行),或抛出异常是时都可以是连接点,spring只支持方法连接点 。虽然现在都用Maven项目构建,但是不能忘记,使用aop需要用到的包:spring-aop + spring-aspects + springsource.org.aopalliance + springsource.org.aspectj.weaver
Pointcut(切入点):目标对象中,已经被增强的方法 。调用这几个方法之前、之后或者抛出异常时干点什么,那么就用切入点来定义这几个方法 。
Advice(通知/增强) :增强方法的代码、想要的功能 。
Target(目标对象):被代理对象,被通知的对象,被增强的类对象 。
Weaving(植入):将通知应用到连接点形成切入点的过程
Proxy(代理):将通知植入到目标对象之后形成的代理对象
aspect(切面):切入点+通知————通知(Advice)说明了干什么的内容(即方法体代码)和什么时候干(什么时候通过方法名中的before,after,around等就能知道),二切入点说明了在哪干(指定到底是哪个方法),切点表达式等定义 。
关于AOP看一个小例子:
1、准备目标对象(被代理对象,被通知的对象,被增强的类对象)
文章插图
2、准备通知(被增强方法的代码,想要实现功能的方法代码)
文章插图
3、配置 applicationContext.xml
1.导入aop(约束)命名空间
2.配置目标对象
3.配置通知对象
4.配置将通知织入目标对象
文章插图
4、测试
文章插图
总结:通知的几种类型
1.前置通知———目标方法运行之前调用
2.后置通知———目标方法运行之后调用(如果出现异常不调用)
3.环绕通知———目标方法之前和之后都调用
4.异常拦截通知———如果出现异常,就会调用
5.后置通知———目标方法运行之后调用(无论是否出现异常都会调用)
7、spring中的aop使用注解配置1、applicationContext.xml中配置目标对象,通知对象,开启使用注解完成织入
文章插图
2、@Aspect注解代表该类是个通知类,书写切点表达式@Pointcut("execution(返回值 全类名.方法名(参数))")
文章插图
注意环绕通知需要这么写:
public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {//环绕方法执行前//proceedingJoinPoint.proceed();表示对拦截的方法进行放行//若注释proceedingJoinPoint.proceed()则不会执行被AOP匹配的方法proceedingJoinPoint.proceed();//环绕方法执行后 }
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Spring Cloud微服务分布式物联网平台前后端分离源码
- ThinkPHP框架——实现定时任务,定时更新、清理数据
- SpringBoot如何用Session共享实现分布式部署?
- 什么是层次型测试框架?探讨一下分层测试与传统测试方法的差别
- SpringBoot运行源码分析:Spring应用上下文准备
- spring-boot-route 使用aop记录操作日志
- SpringCloud Gateway动态路由之Nacos
- ReconSpider:一款功能强大的高级OSINT框架
- Hadoop框架:NameNode工作机制详解
- 我们为什么选择Vuetify作为前端框架