1、注册Bean:xml配置、注解方式(定义basePackage包)
2、依赖注入DI:setter方式注入、成员属性注入、构造器方式注册
3、service层注入:定义接口、定义接口实现、在接口实现类@Service注册Bean、在Controller层通过@Autowired依赖注册接口(不是接口实现类)
原理:①注册接口没实际意义,
②service层实现接口是为了实现Spring的JDK动态代理(需要接口)
③依赖接口是面向接口编程,如果有多个实现类则需用@Qualifier("xxx")指定具体的实现类,否则报错。
④事务处理拦截Service层的方法,非Controller层的代码
4、Bean定义范围:singleton、prototype
singleton:单例范围,整个Spring IOC容器中只有一个Bean的实例;
prototype:原型范围,每次请求都会创建一个新的Bean实例,Spring IOC容器不管理prototype bean的整个生命周期;
注释注入在 XML 注入之前执行,因此后一种配置将覆盖前两种方法连接的属性。
5、<context:annotation-config /> 注解配置
该隐式注册的后处理器包括 AutowiredAnnotationBeanPostProcessor,
CommonAnnotationBeanPostProcessor, PersistenceAnnotationBeanPostProcessor,
以及RequiredAnnotationBeanPostProcessor
6、--切入点表达式定义aop:pointcut的expression
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern)
throws-pattern?)
除了ret-type-pattern返回值类型、name pattern 方法名称、parameters pattern参数,其他都是可选的
通常使用 * 指定返回值类型,即任何返回值类型;
指定返回值类型,要类型全限定名,如java.lang.String
方法名称可以通过通配符 * 完全指定或部分指定
()指定没参数,(..)指定任意多个参数,
--在<aop:config>直接子元素定义的<aop:pointcut>可以被其他<aop:config>引用