spring核心点总结
来源:互联网 发布:网络空间安全 科研 编辑:程序博客网 时间:2024/05/22 04:55
1. IoC
ApplicationContext context =new ClassPathXmlApplicationContext("applcationcontext.xml")
//ApplicationContext接口包括:ClassPathXmlApplicationContext. FilesystemXmlApplicationContext,
//根据名称或者id获取,bean的id和名称是唯一的
SequenceGenerator generator=context.getBean("sequencegenerator")
2.依赖注入分为:设置注入和构造函数注
2.1 设置注入的属性可以是基本类型,也可以是对象关键配置示例如下:
<bean id="" class="">
<property name="age" value="28"/>
<property name="stone" ref="bigStone"/>
此处也可以写成
<property name="stone"> <ref bean=""/> </property>
如果指引的bean在一个xml文件中,也可以写成:
<property name="stone"> <ref local=""/> </property>
</bean>
<bean id="bigStone" class="com.kerry.BigStone"/>
2.2 构造注入,通过构造函数注入,用index区分多个函数
<bean id="" class="">
<constructor-arg index="0">
<ref bean="bigStone"/>
<constructor-arg/>
<constructor-arg index="1">
<value> This is second parameter </value>
<constructor-arg/>
使用constructor-arg的type属性,避免构造子冲突
<constructor-arg index="3" type="string">
<value>This is third parameter</value>
<constructor-arg/>
</bean>
也可以这样简单写成:
<bean id="" class="">
<constructor-arg value="" />
<constructor-arg value="" />
</bean>
3 AOP
1
/**
2 *
3 */
4
package
com.dragon.study;
5
6
/**
7 * @author dragon
8 *
9 */
10
public
interface
IStudent {
11
12
public
void
addStudent(String name);
13
}
14
目标类StudentImpl
2
*
3
*/
4
package
com.dragon.study.Impl;
5
6
import
com.dragon.study.IStudent;
7
8
/**
9 * @author dragon
10 *
11 */
12
public
class
StudentImpl
implements
IStudent {
13
14
public
void
addStudent(String name) {
15
System.out.println(
" 欢迎 "
+ name +
" 你加入Spring家庭! "
);
16
}
17
}
18
前置通知:BeforeAdvice.java
package
com.dragon.Advice;
5
6
import
java.lang.reflect.Method;
7
8
import
org.springframework.aop.MethodBeforeAdvice;
9
10
/**
11 * @author dragon
12 *
13 */
14
public
class
BeforeAdvice
implements
MethodBeforeAdvice {
15
16
public
void
before(Method method,Object[] args, Object target)
17
throws
Throwable {
18
19
System.out.println(
" 这是BeforeAdvice类的before方法. "
);
20
21
}
22
}
后置通知:AfterAdvice.java
package
com.dragon.Advice;
5
6import java.lang.reflect.Method;
7
8import org.springframework.aop.AfterReturningAdvice;
9
10
/**
11 * @author dragon
12 *
13 */
14public
class
AfterAdvice
implements
AfterReturningAdvice{
15
16
public
void
afterReturning(Object returnValue ,Method method,
17
Object[] args,Object target)
throws
Throwable{
18
System.out.println(
"这是AfterAdvice类的afterReturning方法."
);
19
}
20
21
22
}
环绕通知:CompareInterceptor.java
package
com.dragon.Advice;
5
6import org.aopalliance.intercept.MethodInterceptor;
7import org.aopalliance.intercept.MethodInvocation;
8
9
10
/**
11 * @author dragon
12 *
13 */
14public
class
CompareInterceptor
implements
MethodInterceptor{
15
16
public
Object invoke(MethodInvocation invocation)
throws
Throwable{
17
Object result =
null
;
18
String stu_name = invocation.getArguments()[
0
].toString();
19
if
( stu_name.equals(
"dragon"
)){
20
//如果学生是dragon时,执行目标方法,
21
result= invocation.proceed();
22
23
}
else
{
24
System.out.println(
"此学生是"
+stu_name+
"而不是dragon,不批准其加入."
);
25
}
26
27
return
result;
28
}
29
}
配置文件applicationContext.xml
1<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
2<!
DOCTYPE
beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
3
4<
beans
>
5
6<
bean
id
=
"beforeAdvice"
class
=
"com.dragon.Advice.BeforeAdvice"
></
bean
>
7<
bean
id
=
"afterAdvice"
class
=
"com.dragon.Advice.AfterAdvice"
></
bean
>
8<
bean
id
=
"compareInterceptor"
class
=
"com.dragon.Advice.CompareInterceptor"
></
bean
>
9<
bean
id
=
"studenttarget"
class
=
"com.dragon.study.Impl.StudentImpl"
></
bean
>
10
11<
bean
id
=
"student"
class
=
"org.springframework.aop.framework.ProxyFactoryBean"
>
12 <
property
name
=
"proxyInterfaces"
>
13 <
value
>com.dragon.study.IStudent</
value
>
14 </
property
>
15 <
property
name
=
"interceptorNames"
>
16 <
list
>
17 <
value
>beforeAdvice</
value
>
18 <
value
>afterAdvice</
value
>
19 <
value
>compareInterceptor</
value
>
20 </
list
>
21 </
property
>
22 <
property
name
=
"target"
>
23 <
ref
bean
=
"studenttarget"
/>
24 </
property
>
25
26</
bean
>
27
28
29
30
31</
beans
>
现在开始写测试类,Test.java
4package com;
5
6import org.springframework.context.ApplicationContext;
7import org.springframework.context.support.FileSystemXmlApplicationContext;
8
9import com.dragon.study.IStudent;
10
11
/**
12 * @author dragon
13 *
14 */
15public
class
Test {
16
17
/**
18 * @param args
19 */
20
public
static
void
main(String[] args) {
21
// TODO Auto-generated method stub
22
ApplicationContext ctx =
23
new
FileSystemXmlApplicationContext(
"/com/dragon/applicationContext.xml"
);
24
25
IStudent person = (IStudent)ctx.getBean(
"student"
);
26
person.addStudent(
"dragon"
);
27
28
// person.addStudent("javadragon");
29
}
30
31
}
AOP部分代码来自 :http://www.blogjava.net/javadragon/archive/2006/12/03/85115.html
- spring核心点总结
- Spring核心总结
- Spring核心理解总结
- Spring核心概念总结
- Spring框架:核心容器总结
- 总结关于医院营销的11个核心点
- spring核心
- Spring核心
- spring--核心
- spring核心
- spring核心
- spring核心
- spring核心
- Spring核心AOP(面向切面编程)总结
- Spring基础特性总结一--核心组件Bean的使用
- Hibernate核心点介绍:
- Spring学习总结(6)——Spring之核心容器bean
- spring中@Transactional注解使用时注意点总结
- mysql5.5下载地址
- ftream的使用方法
- memcached源码分析-----网络模型
- 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny"
- [Android Groovy]第一讲.开始用Groovy语言来写安卓程序吧!!!
- spring核心点总结
- android 自定义带关闭按钮的dialog
- Java排序方法
- 二叉树的镜像
- GridView类讲解
- AFNetworking源码解析https
- Stack的三种含义
- cocos2dx触摸摇杆
- AOP原理