spring 有哪些特性?
my: spring的特性最主要的就是IOC和di
answer:
- 非侵入式:基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API
- 控制反转:对象交由 Spring 去创建
- 依赖注入:依赖的对象不需要手动调用
setXX
方法去设置,而是通过配置赋值 - 面向切面编程:AOP
- 容器: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