一、 Spring
- Spring概述:spring使用简单的POJO(普通的java对象)进行开发,每一个被spring管理的java对象都称之为Bean;而spring提供了一个IOC容器来初始化对象,解决对象间的依赖管理和对象的使用。
- Spring的jar包:
1) 核心容器(core container)
Spring-Core:核心工具类;
Spring-Beans:Spring 定义Bean的支持;
Spring-Expression:使用表达式语言在运行时查询和操作对象
2) AOP
Spring-Aop:基于代理的AOP支持;
Spring-Aspects:基于AspectJ的AOP支持;
3) Web
Spring-Web:提供基础的Web集成功能,在web项目中提供spring的容器;
Spring-Webmvc:提供基于Servlet的springmvc;
4) 数据库访问
Spring-JDBC:提供以JDBC访问数据的支持;
Spring-TX:提供编程式和声明式的事物支持;
Spring-ORM:提供对象/关系映射技术的支持;
Spring-OXM:提供对对象/XML映射技术的支持; - Spring框架本身的四大原则:
1) 使用POJO进行轻量级和最小侵入式开发;
2) 通过依赖注入和基于接口编程实现松耦合;(软件设计中的“耦合”指,两个功能函数之间的依赖程度。很多设计模式就是为了解决紧耦合的问题。如果两个组件耦合太紧,则说明一个组件和另一个组件直接相关,这样的话,如果修改一个组件的逻辑,那么另外一个组件的逻辑也需修改。)
3) 通过AOP和默认习惯进行声明式编程;
4) 通过AOP和模板(template)减少模式化代码; - 声明Bean的注解:
@Component组件,没有明确的角色。
@Service在业务逻辑层(service层)使用。
@Repository在数据访问层(dao层)使用。
@Controller在展现层(SpringMVC)使用。
@Configuration表明当前类是一个配置类
注入Bean的注解,一般情况下通用:
@Autowired:Spring提供的注解。(可注解在set方法或者属性上)
@Inject:JSR-330提供的注解。
@Resource:JSR-250提供的注解 - AOP:面向切面编程,相当于OOP面向对象编程,存在目的为了解耦。
1) 在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。
2) 使用@Aspect声明这是一个切面。
3) 使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。 - 条件注解@Conditional根据满足某个特定条件创建一个特定的Bean。(通过实现Condition接口,并重写其matches方法来构造判断条件)