-
注解Annotation
- 对属性的注解
- 对方法的注解
-
注解的使用步骤
-
定义注解:
- @Retention(Retention.RUNTIME)
- @Target(ElementType.FEILD)
-
public @interface 注解名{}
- String name() default "";
- 在注解大括号中的
-
需要说明的问题?
- 注解的生命周期
- 注解的位置
- 子主题 2
- 按照位置分或者说 按位置分
-
初始化容器
-
初始化Spring容器的方式
- 推荐:ApplicationContext ctx=new ClasspathXMLApplicationContext("");
- ApplicationContext ctx=new FileSystemXMLApplicationContext("");
- 子主题 2
-
基本的依赖注入
-
<bean id="" name="" scope="default|prototype" lazy-init="true|false"
init-method="初始化的方法名" destroy-method="销毁的方法名 "
class="" factory-method="" factory-bean="">
<property name="属性名" ref="引用的对象"/>--引用方式的注入
<property name="属性名"><bean class=""/></property>--单独的注入
<property name="" value=""></bean>--基本数据类型的注入
<property name="">--集合的注入
<set><value></value><value></value>...</set>
<list><value></value><value></value>...</list>
<map>
<entry >
<key></key><value></value>
</entry>...
</map>
</property>
<property name="">
<props> <prop key="">值</prop> ...<props>
</property>
<!--直接使用构造方法注入:-->
<constructor-arg index="0" type="参数的类型" value|ref=""/>--基本数据类型不需要type=""
</bean>
- 实例化 bean的方式
- bean的作用范围
- id与name的区别
- 懒加载
- 初始化和销毁的方法
- 手工装配方式
-
自动装配方式
- <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xml:context="http://www.springframework.org/schema/context"
xmlSchemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-bean-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">...
- <context:annotation-config/>--开启注解
- 添加jar:
aspectjweaver.jar
aspectjrt.jar
-
添加注解
-
@Autowired(required=true|false)-- 按类型
- 按类型进行注入
如果将required=false(默认为true) 则注入不成功将设为null
- 可结合@Qulifier("配置文件中bean的名字")
-
@Resource(name="spring中的bean名称")--按名称
- 首先根据name指定的属性在springContext中查找 如果找不到则为空
- 如果没有指定name的名称,则根据JaveBean类中的属性名字在spring context中进行查找,
如果找不到,则再按照 JavaBean类中属性的类型进行查找
- 注解的添加位置:也可以是setter上
- 可在<bean autowired="byType|byName">
-
AOP
-
问题的引出:
已经编写好PersonService,
现在要求具有权限的用户
才可以使用Service提供的服务(方法)
- 不使用AOP解决办法,直接在原有的方法上进行侵入式的逻辑处理
-
使用JDK提供的代理,将建代理工厂
- 创建代理实例
- 定义代理实例方法
- 使用的是 代理对象调用方法而不是原有对象
- 目标对象必须实现接口,且要代理的方法必须在接口中
- 使用JDK的Proxy机制的步骤
- 通过CGLib创建代理
- 解决思路
-
AOP相关概念
-
通知Advice
- 前置通知
- 后置通知
- 例外通知
- 最终通知
- 环绕通知
- 通知的类型
-
切面
- 侧面,一方面,关注的问题
-
连接点
- 可以进行拦截的点--被拦截的方法,在哪下刀
-
切入点
- 如何进行拦截的代码或方法,如何下刀
-
目标对象
- 被代理的对象,被下刀的对象
-
织入
- 应用AOP的过程
-
引入
- 动态添加方法的过程
-
Spring中AOP的应用
- 子主题 1
- 子主题 4