spring面试题整理
1.什么是springIOC
控制反转 他是一种设计思想。把所有写好的bean交给IOC容器来管理,降低了耦合度
2.什么是DI
依赖注入
依赖:一个类使用了另一个类的对象,这个类就依赖于另一个类
依赖注入:将另一个类的对象通过spring特有的方式放到这个类中,供这个类使用,这就是依赖注入
3.springAOP
面向切面编程,确保了Spring和其他AOP框架的共通性。
关注点在于切面 实现以解决特定业务问题的方法
横切关注点是贯穿整个应用程序的关注点,比如日志
他有五中不同类型的通知 :
1.前置通知(使用 @Before
注解使用这个Advice)
2.返回之后的通知(过 @AfterReturning
关注使用它)
3.抛出后执行的通知(通用 @AfterThrowing
注解来使用)
4.后置通知(通过 @After
注解使用)
5.围绕通知(通过 @Around
注解使用)
提到AOP就必须要提到代理:
1.静态代理:在程序运行前就已经存在(优点:方便增加功能,扩展业务逻辑。缺点:增加代码的复杂性,不方便维护。)
2.动态代理:运用反射机制动态创建而成
4.spring中的bean是否是线程安全?
spring中的bean是ioc中获取的 ioc中的bean是通过扫描配置文件,读取className,通过反射创建而来的。所以说线程是否安全取决于自己写出的bean是否是线程安全的
5.spring中的bean如何被回收?
GC回收 在对象不可达的时候就会被回收(在没有被引用的时候就会被回收);但是ioc中的bean默认是单例,他不会被回收
6.spring中的注解
@Configuration:与在xml中配置bean意义是一样的
@Value
@PostConstruct:初始化bean
@PreDestory:销毁bean
创建对象的注解:
@Controller
@Service
@Reponsitory
@Component
当出现这些注解说明是交给IOC容器管理的
@Scope:spring默认是单例的 那么如果想要创建多例 spring提供了一个@Scope注解,该注解决定了是创建多例还是单例
注入的注解
@AutoWrite
@Resource
7.Spring框架支持哪些作用域
singleton(单例) : bean在每个Spring ioc 容器中只有一个实例。
prototype:一个bean的定义可以有多个实例。
request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。
session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
注:Spring bean 的作用域是singleton.
8.spring支持的事务
编程式事务:灵活性高,难维护
申明式事务:业务代码和事务管理分离,你只需用注解和XML配置来管理事务
如果在没有特定的情况下一般用申明式事务,它符合spring的特性,无入侵