spring 有哪些特性?

my: spring的特性最主要的就是IOC和di

answer:

  1. 非侵入式:基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API
  2. 控制反转:对象交由 Spring 去创建
  3. 依赖注入:依赖的对象不需要手动调用 setXX 方法去设置,而是通过配置赋值
  4. 面向切面编程:AOP
  5. 容器:Spring 是一个容器,包含并管理应用对象的生命周期

spring ioc/ di 是什么

my:ioc是控制反转,di是依赖置入。ioc和di是从不同的角度来描述一件事,总体来说就是将创建类这个动作交由框架自己去实现 。 answer:见上题,IOC 是设计理念,di 是实现方法。

依赖注入的两个注解有什么区别?

my:一个注解是@Autowired,另一个注解是dependency吗,记不清了。 answer:依赖注入的注解有@Autowired@Resource@Inject这几个。 @Autowired是spring引入的注解,默认按 byType 自动装配;@Resource是JDK原生的注解,默认按 byName 自动装配。它两各自的属性也不同。@Inject@Autowired的用法基本一样,属于原生注解。我们的项目是DDD架构,为了减少Domain层的依赖,让Domain脱离Spring也可以部署,会在Domain中使用@Inject来代替@Autowired@Named来代替@Component

如果使用@Autowired byType,这个类型的bean不是唯一会怎么样,怎么解决?

my :额,忘了,应该会报错吧。怎么解决的话,就别用byType好了。 answer:如果有多个类型一样的bean,默认根据特定的属性名进行选取。可以配置@Qualifer注解,使用 byName来解决这个问题。

@Autowired
@Qualifier("helloWorldDao")
private HelloDao helloDao;

answer: 或者在主要实现类上添加@Primary注解

bean作用域有哪些

my:不懂 answer: bean 作用域

什么情况下会使用非单例的bean

my:也许,连接池? answer:有状态的类需要使用 Prototype类型

使用单例bean需要注意什么问题?

my:不懂 answer:使用单例bean需要关注多线程安全,如果需要保存状态,要么使用 prototype 类型,加上@scope("prototype");要么把需要的可变成员变量保存在 ThreadLocal

分布式情况怎么加锁

my:不懂 https://zhuanlan.zhihu.com/p/42056183

spring 事务的使用场景

my:需要保持多个数据库ddl操作的一致性的时候

常用的集合有哪些

my:arraylist linkedlist hashmap hashtable deque queue stack vector concurrenthashmap PriorityQueue

线程安全的集合有哪些

my: concurrnethashmap hashtable vector 还有一些原子集合类? answer:concurrnethashmap hashtable vector CopyOnWriteArrayList CopyOnWriteArraySet ConcurrentSkipListMap等

concurrenthashmap 怎么实现线程安全

my:hashtable 是通过 synchronized ,性能比较差,现在不推荐使用;ConcurrentHashMap 应该是cas? answer:ConcurrentHashMap

CAS的过程是什么,CAS有什么缺点

CAS