Spring

本文深入探讨了Spring框架的两大核心特性——IOC(控制反转)和AOP(面向切面编程),解释了它们的概念和作用。IOC通过依赖注入实现对象的管理,提高了代码的可测试性和松耦合性。AOP则通过动态代理实现横切关注点的分离,降低了代码的重复。此外,文章还介绍了Spring中bean的作用域、事务管理类型以及常见的注解使用。

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

Spring中两个重要特性是什么?

Spring中有两个非常重要的特性IOC和AOP,其中AOP是IOC功能的拓展

IOC:IOC是一种设计思想,就是 将原本在程序中手动创建对象的控制权,交由Spring 框架来管理。负责创建对象,使用依赖注入(dependency injection,DI)管理它们,将对 象集中起来,配置对象,管理对象的整个生命周期。

AOP:AOP模块用于为支持Spring应用程序面向切面的开发。AOP联盟提供了很多支持,这 样就确保了Spring和其他AOP框架的共通性。面向切面编程能够将那些与业务无关,却为 业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起 来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

IOC的好处有哪些?

1、IOC或依赖注入最小化应用程序代码量

2、它使测试应用程序变得容易,因为单元测试中不需要单例或JNDI查找机制。

3、以最小的代价和最少的干扰来促进松耦合。

4、IOC容器支持快速实例化和懒加载。

AOP是怎么实现的?

        AOP就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP 会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用Cglib ,这时候Spring AOP会使用 Cglib 生成一个 被代理对象的子类来作为代理。

Spring中bean有哪些作用域?

singleton:Spring将bean定义的范围限定为每个Spring IOC容器只有一个单实 例。

prototype:单个bean定义有任意数量的对象实例。

request:作用域为一次http请求,该作用域仅在基于web的Spring ApplicationContext情形下有效。

session:作用域为HTTP Session,该作用域仅在基于web的Spring ApplicationContext情形下有效。

global-session:作用域为全局的HTTP session。该作用域也是仅在基于web的 Spring ApplicationContext情形下有效。

单例模式是线程安全的吗?

若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。

Spring中有哪些常见的注解?

@Component:用于指示类是组件。这些类用于自动注入,并在使用基于注解的 配置时配置为bean。

@Controller:是一种特定类型的组件,用于MVC应用程序,主要与 @RequestMapping注解一起使用。

@Repository:用于表示组件用作存储库和存储/检索/搜索数据的操作。我们可以 将此注解应用于DAO实现类。

@Service:用于指示类是服务层。

@Required:此注解简单地说明作用的bean属性必须在配置时通过bean定义中的显 式属性值或通过自动注入填充。如果作用的bean属性未填充,容器将抛出 BeanInitializationException

@ResponseBody:用于将对象作为response,通常用于将XML或JSON数据作为 response发送。

@PathVariable:用于将动态值从URI映射到处理方法参数。

@Autowired:对自动注入的位置和方式提供了更细粒度的控制。它可以用于在 setter方法上自动注入bean。就像@Required 注解一样,修饰setter方法、构造 器、属性或者具有任意名称和/或多个参数的PN方法。

@Qualifier:当有多个相同类型的bean并且只需要将一个bean自动注入时, @Qualifier注解与@Autowired注释一起使用,通过指定将连接哪个bean来消除歧 义。 @Scope:配置Spring bean的作用域。

@Configuration:表示Spring IOC容器可以将该类用作bean定义的源。 @ComponentScan:应用此注解时,将扫描包下的所有可用类。

@Bean:对于基于java的配置,用@Bean注解修饰的方法将返回一个在Spring应 用程序上下文中注册为Bean的对象。

用于配置切面和通知、@Aspect、@Before、@After、@Around@Pointcut等 的AspectJ注解。

Spring支持的事务管理类型?

编程式事务,在代码中硬编码。(不推荐使用)

声明式事务,在配置文件中配置(推荐使用)

声明式事务分两种:

1、基于XML的声明式事务

2、基于注解的声明式事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值