Spring5

本文详细介绍了Spring框架的核心特性,包括其轻量级、IOC和AOP等,并探讨了SpringBoot作为快速开发脚手架的优势与SpringCloud在微服务中的应用。同时,分析了Spring框架配置繁琐的问题。文中还深入讲解了IOC理论,展示了如何通过注解实现Bean自动装配,并简述了代理模式和AOP的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优点:

  • Spring是一个开源的免费的框架(容器)!
  • Spring是一个轻量级的,非入侵式的框架!
  • 控制反转(IOC),面向切面编程(AOP)!
  • 支持事务的处理,对框架整合的支持!

总结一句话:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架!

SpringBoot

  • 一个快速开发的脚手架
  • 基于SpringBoot可以快速的开发带个微服务
  • 约定大于配置

SpringCloud

  • SpringCloud是基于SpringBoot实现的。

因为现在大多数公司都在使用SpringBoot进行快速开发,学习SpringBoot的前提,需要完全掌握Spring及SpringMVC! 承上启下的作用!

弊端:发展太久之后,违背了原来的理念!配置十分繁琐!人称:“配置地狱!”

2、IOC理论推导

将对象的创建交给spring管理,程序员不在关注对象的创建

        在我们之前的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求去修改原代码!如果程序代码量十分大,修改一次的成本代价十分昂贵!

1.UserDao接口

public interface userDao{
    private void getUser();
}

2.Dao的实现类

public class UserDaoImpl implements UserDao{
    @Oveeribe
    public void getUser(){
        System.out.println("获取用户数据");
    }
    
}
public class UserMysqlImpl implements UserDao{
    @Oveeribe
    public void getUser(){
        System.out.println("获取mysql数据");
    }
    
}

3.userService接口

public interface userService{
    private void getUser();
}

4.Service的实现类

public class UserServiceImpl implements UserService{
    
    private UserDao userDao = new UserDaoImpl();

    @Oveeribe
    public void getUser(){
        userDao.getUser();
    }
    
}

5.测试

dao层实现类每改变一次,service业务层就需要改动一次。

UserService userService = new UserServiceImpl();

userService.getUser();

修改Service层

private UserDao userDao;


//利用set进行动态实现值得注入!
public void setUserDao(UserDao userDao){
    this.userDao = userDao;
}

测试:

@Test
public void test(){
    UserService userService = new UserviceImpl();
    ((UserServiceImpl) userService).setUserDao(new UserMysqlImpl);
    userService.getUser();

}

我们使用一个Set接口实现,已经发生了革命性的变化!

  • 之前,程序是主动创建对象!控制权在程序员手上!
  • 使用了set注入之后,程序不在具有主动性,而是变成了被动的接收对象!

这种思想,从本质上解决了问题,我们程序员不用再去管理对象的创建了。系统的耦合性大大降低~,可以更加专注的在业务的实现上!这是IOC的原型!

 IOC的本质

 注解实现Bean自动装配

@Autowired注解

 @Resource注解

 使用注解开发

 

 

 使用Java的方式配置Spring

 配置文件

 测试类

 这种纯Java的配置方式,在springBoot项目中随处可见!

代理模式

 代理模式的分类:

  • 静态代理
  • 动态代理

 静态代理

角色分析:

  • 抽象角色:一般会使用接口或者抽象类来解决
  • 真是角色:被代理的角色
  • 代理角色:代理真是角色,代理真是角色后,我们一般会做一些附属操作
  • 客户:访问代理人

动态代理 

  • 动态代理和静态代理角色一样
  • 动态代理的代理类是动态生成的,不是我们直接写好的!
  • 动态代理分为两大类:基于接口的动态代理,基于类的动态代理
  • 基于接口---JDK动态代理
  • 基于类:cglib
  • Java字节码实现:Javasist

需要了解两个类:Proxy(代理),invocationHandler(调用处理程序)

 AOP

 什么是AOP?

 

 方式三:注解实现

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你开心是我想要的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值