spring bean属性注入的方式,注解配置,aop概念,术语

1:bean属性注入的方式 

依赖注入就是在创建对象的时候,为属性进行赋值的过程

依赖注入的实现方式: - 记住

Spring在创建对象的时候,默认调用的是无参的构造方法

需求 : 在创建对象的时候,就有一些初始值 ?

使用依赖注入的方式可以实现

1:构造器注入  

2:set方法注入

1、在对应的类中添加依赖对象的属性

2、给属性添加set方法

3、在配置文件中将对象进行注入

3:接口注入

注意:配件文件的方式只支持构造器注入和set方法注入

 

 

2:注解配置

配置文件能够做的,注解都可以做

开发流程:

1:引入约束,context

2:配置扫描机制

启动spring的注解扫描机制

 

3:添加注解

1):@Component - 通用注解 - 如果需要将类的对象交给spring 管理的话,直接在类上添加这个注解即可,默认的bean的名字是类名的首字母小写

2)在实际开发的时候,使用他的衍生注解:

 

4:依赖注入

@Autowired---是按照类型注入

@Resource----是按照类型或者名称注入,如果使用名字进行注入的话,则必须要有一个bean的名字存在,如果不存在会报错。

可以在@Resource后面来指定具体需要依赖对象的名字,如:@Resource(name=”abc”), 表示注入的是一个名字叫abc的bean对象

如果没有bean的名字为abc的话,则程序会报错,NoSuchBean------

5:bean的作用域

注解默认的也是单例的,如果需要多例,需要在对应的类上配置scope注解,@Scope(value=”prototype”)

 

 

3:注解和xml混用

1:xml实现核心配置

2:注解实现bean的声明以及注入

4:AOP的概述

3.1:什么是aop

AOP Aspect Oriented Programing 面向切面编程

使用动态代理的机制,在不修改源代码的情况下,对某些方法进行动态的增强

传统开发:

 

 

发现很多重复的代码:

解决方案:

众多方法中的所有共有代码全部抽取出来,放置到某个地方集中管理,然后在具体运行时,再由容器动态织入这些共有的代码

AOP解决之后:  

 

 

好处:

1:程序员在编写具体的业务逻辑处理方法时,只需关心核心的业务逻辑处理,既提高了工作效率,又使代码变更简洁优雅

2:日后的维护中由于业务逻辑代码与共有代码分开存放,而且共有代码是集中存放的,因此使维护工作变得简单轻松

3.2:aop的应用场景     

场景一: 记录日志

场景二: 监控方法运行时间 (监控性能)

场景三: 权限控制

场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象,第二次调用,直接从内存对象返回,不需要查询数据库 )

场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )

3.3:aop的相关术语

 

3.4:Spring AOP编程两种方式

l  Spring 1.2 开始支持AOP编程 (传统SpringAOP 编程),编程非常复杂 ---- 已不再使用

l  Spring 2.0 之后支持第三方 AOP框架(AspectJ),实现另一种 AOP编程 -- 推荐

5:aspectj切面编程

 

 

 

 

面向切面编程流程:

1:编写目标(对哪个类中的哪个方法进行增强)

2:编写advice (通知,增强)

3:导包和引入约束

 

 

在xml文件中引入aop约束

springAOP的拓展,AOP联盟的规范,spring对aspect的支持,aspectj的官方包

4:配置aop自动代理

在spring的核心配置文件中配置aop的自动代理:<aop:aspectj-autoproxy/>

 

5:配置切入点和切面

 

 

注意:

1:通知以及目标必须都是由spring管理的。

2:声明切面类@Aspect - 配置切入点表达式是在切面类中进行配置 - 一般情况下就是增强的类

3:使用切入点表达式进行配置

 

切入点表达式的语法

bean(beanId/name)  -- 表示拦截某个bean下面的所有的方法

execution* com.sky.service..*.*..))

 

 

 

*:匹配任何数量字符;

..:匹配任何数量字符的重复,如在类型模式中匹配任何数量包和子包;而在方法参数模式中匹配任何数量参数

 

 

posted @ 2022-02-12 23:34  这题我不会  阅读(422)  评论(0)    收藏  举报