Spring的IOC和AOP知识点回顾

IOC和DI区别

ioc:控制反转 对象创建交给spring配置
di:依赖注入 向类里面属性中设置值
关系:依赖注入不能单独存在,需要在ioc基础上完成操作

bean实例化的三种方式:无参构造、静态工厂、实例工厂

属性注入(xml)的几种方式:set方法、有参构造、接口注入

常用注解注入属性,需要注意的是

在service类里面定义dao类型属性 Autowired不需要匹配对象属性的value值userDao。

注入属性第二个注解 @Resource这个注解的name值需要与dao对象属性的valueuserDao匹配

通常情况@Autowired是通过byType的方法注入的,可是在有多个实现类的时候,byType不能确定唯一的实现类,就会通过byName的方式去匹配,所以有多个实现类的时候,变量名应该不同,否则会报错

 

Spring的注解装配Bean

Spring2.5 引入使用注解去定义Bean

  • @Component 描述Spring框架中Bean

Spring的框架中提供了与@Component注解等效的三个注解

  • @Repository 用于对DAO实现类进行标注(dao层)
  • @Service 用于对Service实现类进行标注(service层)
  • @Controller 用于对Controller实现类进行标注(web层)

注解进行属性注入

普通属性:@Value(value="..."),这时候可以不写setter方法

对象属性:@Resource(name = "....")

或者采用   @Autowired

       @Qualifier(value = "plane")

//因为只有一个属性value,所以可以直接写。一般需要value="..."
@Component("user")
public class User {
    @Value(value="Spring")
    private String s;
 
    public void sayHello(){
        System.out.println("Hello World.");
    }
 
    @Override
    public String toString() {
        return "User{" +
                "s='" + s + '\'' +
                '}';
    }
}

 

IOC底层原理:dom4j解析配置文件+反射机制

 

AOP

joinpoint(连接点):类里面可以被增强的方法称之为连接点
pointcut(切入点):指我们要对哪些joinpoint进行拦截的定义
advice(通知/增强):拦截到joinpoint之后要做的事情就是通知。通知分为前置通知,后置通知,
异常通知,最终通知,环绕通知(切面要完成的功能)。
aspect(切面):切入点和通知的结合,将增强用到切入点的过程。

aop底层原理:动态代理方式实现

面向切面编程(aop)是对面向对象编程(oop)的补充, 
面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。 
AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象, 是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。

 AOP的注解方式

bean.xml中:

AOP的xml方式实现

 

JdbcTemplate实现CRUD操作

查询的具体实现:

查询返回某一个值

查询返回对象

查询返回集合

MyRowMapper和查询单个对象时一样,不用改变。

 

dao使用jdbcTemplate

 

Spring的事务管理

spring管理事务的两种方式:

第一种:编程式事务管理(不用)

第二种:声明式事务管理

            1.基于XML配置文件实现

             2.基于注解实现

spring管理事务的api:

接口 PlatformTransactionManager 事务管理器

spring针对不同的dao层框架,提供接口不同的实现类

(1)首先配置事务管理器

(2)配置事务增强

(3)配置切面

使用注解方式配置事务:

第三步:在要使用事务的方法所在类上面添加注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值