Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
个人理解:Sping容器作为一个bean工厂,通过配置文件来管理bean(应用中所有组件都当成bean)
组成关系:BeanFactory -------->ApplicationContext(子接口)-------->ClassPathXmlApplicationContext (实现类)········
IOC控制反转模式(也称作依赖性介入)的基本概念是:通过配置文件来给类注入值,不需要new对象。好处:低耦合,当类改变时,无需要在类中修改,只需要在配置文件中修改
如:
- <bean id="bean2" class="yeah.developers.spring.Bean2">
- <property name="bean3" ref="bean3"></property>
- </bean>
- <bean id="bean3" class="yeah.developers.spring.Bean3">
AOP面向切面编程:定义一个切面类,里面有很多方法,每个方法都有自己的切入点(在什么地方用到)和增强处理(前置,后置)
如:
切面类
@Aspect
public class LogPrint {
@Pointcut("execution(* cn.itcast.service..*.*(..))")//声明一个切入点
private void anyMethod() {}
@Before("anyMethod() && args(userName)")//定义前置通知
public void doAccessCheck(String userName) {
}
@AfterReturning(pointcut="anyMethod()",returning="revalue")//定义后置通知
public void doReturnCheck(String revalue) {
}
@AfterThrowing(pointcut="anyMethod()", throwing="ex")//定义例外通知
public void doExceptionAction(Exception ex) {
}
@After("anyMethod()")//定义最终通知
public void doReleaseAction() {
}
@Around("anyMethod()")//环绕通知
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
return pjp.proceed();
}
}