对Spring的理解
Spring是一个开源框架,为简化企业级应用开发而生。Spring可以是使简单的JavaBean实现以前只有EJB才能
实现的功能。Spring是一个IOC和AOP容器框架。
Spring容器的主要核心是:
控制反转(IOC),传统的java开发模式中,当需要一个对象时,我们会自己使用new或者getInstance等直接
或者间接调用构造方法创建一个对象。而在spring开发模式中,spring容器使用了工厂模式为我们创建了所需要的对
象,不需要我们自己创建了,直接调用spring提供的对象就可以了,这是控制反转的思想。
依赖注入(DI),spring 使用 javaBean 对象的 set 方法或者带参数的构造方法为我们在创建所需对象时将其属
性自动设置所需要的值的过程,就是依赖注入的思想。
面向切面编程(AOP),在面向对象编程(oop)思想中,我们将事物纵向抽成一个个的对象。而在面向切面编程
中,我们将一个个的对象某些类似的方面横向抽成一个切面,对这个切面进行一些如权限控制、事物管理,记录日志等
公用操作处理的过程就是面向切面编程的思想。AOP底层是动态代理,如果是接口采用JDK动态代理,如果是类采用
CGLIB方式实现动态代理。
Spring常用的注解
1、@Component 是所有受 Spring 管理组件的通用形式,@Component 注解可以放在类的头上, @Component 不推荐使用。标注一个普通的 spring Bean 类。
2、@Controller 对应表现层的 Bean。标注一个控制器组件类。
3、@Service 对应的是业务层 Bean。标注一个业务逻辑组件类。
4、@Repository 对应数据访问层 Bean。标注一个 DAO 组件类。 在 spring 未来的版本中,@Controller,@Service,@Repository 会携带更多语义。
尽量考虑使用@Controller,@Service,@Repository 代替通用的@Component。
5、@Transactional 应用事务的注解
1)定义到方法上: 当前方法应用 spring 的声明式事务
2)定 义到类上: 当前类的所有的方法都应用 Spring 声明式事务管 理;
3)定义到父类上: 当执行父类的方法时候应用事务。
在 spring 未来的版本中,@Controller,@Service,@Repository 会携带更多语义。
尽量考虑使用@Controller,@Service,@Repository 代替通用的@Component。