spring|Java程序员必会的三个技能: Spring+MySQL+并发编程( 六 )
基于注解配置
您可以通过在相关的类 , 方法或字段声明上使用注解 , 将 bean 配置为组件类本身 , 而不是使用 XML 来描述 bean 装配 。 默认情况下 , Spring 容器中未打开注解装配 。 因此 , 您需要在使用它之前在 Spring 配置文件中启用它 。 例如:
<beans> <context:annotation-config/> <!-- bean definitions go here --> </beans>
基于 Java API 配置
Spring 的 Java 配置是通过使用@Bean 和 @Configuration 来实现 。
2.1.@Bean 注解扮演与 元素相同的角色 。
2.2. @Configuration 类允许通过简单地调用同一个类中的其他@Bean 方法来定义 bean 间依赖关系 。
例如:
public class StudentConfig { @Bean public StudentBean myStudent() { return new StudentBean();
10.什么是 AOP?
AOP(Aspect-Oriented Programming) 即 面向切面编程 它与 OOP( Object-Oriented Programming 面向对象编程) 相辅相成 提供了与 OOP 不同的抽象软件结构的视角. 在 OOP 中 我们以类(class)作为我们的基本单元 而 AOP 中的基本单元是 Aspect(切面)
11. AOP 中的 Aspect、Advice、Pointcut、JointPoint 和 Advice 参数分别是什么?
- Aspect - Aspect 是一个实现交叉问题的类 , 例如事务管理 。 方面可以是配置的普通类 , 然后在 Spring Bean配置文件中配置 , 或者我们可以使用 Spring AspectJ 支持使用 @Aspect 注解将类声明为 Aspect 。
- Advice - Advice 是针对特定 JoinPoint 采取的操作 。 在编程方面 , 它们是在应用程序中达到具有匹配切入点的特定JoinPoint 时执行的方法 。 您可以将 Advice 视为 Spring 拦截器(Interceptor)或 Servlet过滤器(filter) 。
- Advice Arguments - 我们可以在 advice 方法中传递参数 。 我们可以在切入点中使用 args()表达式来应用于与参数模式匹配的任何方法 。 如果我们使用它 , 那么我们需要在确定参数类型的 advice 方法中使用相同的名称 。
- Pointcut - Pointcut 是与 JoinPoint 匹配的正则表达式 , 用于确定是否需要执行 Advice 。Pointcut使用与 JoinPoint 匹配的不同类型的表达式 。 Spring 框架使用 AspectJ Pointcut表达式语言来确定将应用通知方法的 JoinPoint 。
- JoinPoint - JoinPoint 是应用程序中的特定点 , 例如方法执行 , 异常处理 , 更改对象变量值等 。 在 Spring AOP中 , JoinPoint 始终是方法的执行器 。
实现 AOP 的技术 , 主要分为两大类:
静态代理 - 指使用 AOP 框架提供的命令进行编译 , 从而在编译阶段就可生成 AOP 代理类 , 因此也称为编译时增强;编译时编织(特殊编译器实现)类加载时编织(特殊的类加载器实现) 。
动态代理 - 在运行时在内存中“临时”生成 AOP 动态代理类 , 因此也被称为运行时增强 。JDK 动态代理CGLIB
13. Spring AOP and AspectJ AOP 有什么区别?
Spring AOP 基于动态代理方式实现;AspectJ 基于静态代理方式实现 。Spring AOP 仅支持方法级别的 PointCut;提供了完全的 AOP 支持 , 它还支持属性级别的 PointCut 。
五、最后:针对最近很多人都在面试 , 我这边也整理了相当多的面试专题资料 , 也有其他大厂的面经 。 希望可以帮助到大家 。
下面的面试题答案都整理成文档笔记 。 也还整理了一些面试资料&最新2020收集的一些大厂的面试真题(都整理成文档 , 小部分截图) , 需要的朋友关注小编后回复关键字“666”免费获取 。
推荐阅读
- 计算机专业大一下学期,该选择学习Java还是Python
- 程序员为教师妻子开发应用:将iPhone变成文档摄像头
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 学习大数据是否需要学习JavaEE
- 悔哭!一程序员误把7500个比特币当垃圾扔掉,估算约2.4亿美元
- 2.4亿美元打水漂!程序员小哥把7500个比特币当垃圾扔掉 硬盘找不回
- 从事Java开发时发现基础差,是否应该选择辞职自学一段时间
- 2021年Java和Python的应用趋势会有什么变化?
- 程序员开发抢茅台脚本:2天就刷榜Github
- 为什么我喜欢C语言,却非常讨厌C++?一位国外程序员的回答
