當前位置:
首頁 > 知識 > JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

一、使用註解配置spring1.步驟

1.1 導包4+2+spring-aop

4代表:

2代表:

日誌包:com.springsource.org.apache.commons.logging-1.1.1.jar

可選:com.springsource.org.apache.log4j-1.2.15.jar(老版本要導入的,導入可以保證一定能運行)

1.2 為主配置文件引入新的命名空間(約束)

1.3 開啟使用註解代替配置文件

1.4 在類中使用註解完成配置

2.將對象註冊到容器

//
//@Component("user")
// @Service("user") // service層
// @Controller("user") // web層
@Repository("user")// dao層

3.修改對象的作用範圍

//指定對象的作用範圍
@Scope(scopeName="singleton")

4.值類型注入

通過反射的Field賦值,破壞了封裝性:

@Value("tom")
private String name;

通過set方法賦值,推薦使用.:

@Value("tom")
public void setName(String name) {
this.name = name;
}

5.引用類型注入

//@Autowired //自動裝配
//問題:如果匹配多個類型一致的對象.將無法選擇具體注入哪一個對象.
//@Qualifier("car2")//使用@Qualifier註解告訴spring容器自動裝配哪個名稱的對象
private Car car;

推薦方式:

@Resource(name="car")//手動注入,指定注入哪個名稱的對象
private Car car;

6.初始化|銷毀方法

@PostConstruct //在對象被創建後調用.init-method
public void init{
System.out.println("我是初始化方法!");
}
@PreDestroy //在銷毀之前調用.destory-method
public void destory{
System.out.println("我是銷毀方法!");
}

二、STS插件1.手動安裝插件(成功率低)

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

步驟1:

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

步驟2:

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

步驟3:

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

2.直接使用spring裝好插件的eclipse三、spring與junit整合測試1.導包4+2+aop+test2.配置註解

//幫我們創建容器
@RunWith(SpringJUnit4ClassRunner.class)
//指定創建容器時使用哪個配置文件
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo {
//將名為user的對象注入到u變數中
@Resource(name="user")
private User u;

3.測試

@Test
public void fun1{

System.out.println(u);

}

四、spring中的aop1.aop思想介紹

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

2.spring中的aop概念

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

3.spring實現aop的原理

3.1 動態代理(優先)

被代理對象必須要實現介面,才能產生代理對象.如果沒有介面將不能使用動態代理技術

3.2 cglib代理(沒有介面)

第三方代理技術,cglib代理.可以對任何類生成代理.代理的原理是對目標對象進行繼承代理. 如果目標對象被final修飾.那麼該類無法被cglib代理.

4.aop名詞學習

JAVAEE——spring02:使用註解配置spring、sts插件、junit整合測試和aop演示

五、spring中的aop演示1.步驟(xml配置)1.1 導包4+2

spring的aop包:

spring-aspects-4.2.4.RELEASE.jar

spring-aop-4.2.4.RELEASE.jar

spring需要第三方aop包:

com.springsource.org.aopalliance-1.0.0.jar

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

1.2 準備目標對象

public class UserServiceImpl implements UserService {
@Override
public void save {
System.out.println("保存用戶!");
//int i = 1/0;
}
@Override
public void delete {
System.out.println("刪除用戶!");
}
@Override
public void update {
System.out.println("更新用戶!");
}
@Override
public void find {
System.out.println("查找用戶!");
}
}

1.3 準備通知

//通知類
public class MyAdvice {

//前置通知
// |-目標方法運行之前調用
//後置通知(如果出現異常不會調用)
// |-在目標方法運行之後調用
//環繞通知
// |-在目標方法之前和之後都調用
//異常攔截通知
// |-如果出現異常,就會調用
//後置通知(無論是否出現 異常都會調用)
// |-在目標方法運行之後調用
//----------------------------------------------------------------
//前置通知
public void before{
System.out.println("這是前置通知!!");
}
//後置通知
public void afterReturning{
System.out.println("這是後置通知(如果出現異常不會調用)!!");
}
//環繞通知
public Object around(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("這是環繞通知之前的部分!!");
Object proceed = pjp.proceed;//調用目標方法
System.out.println("這是環繞通知之後的部分!!");
return proceed;
}
//異常通知
public void afterException{
System.out.println("出事啦!出現異常了!!");
}
//後置通知
public void after{
System.out.println("這是後置通知(出現異常也會調用)!!");
}
}

1.4 配置進行織入,將通知織入目標對象中
























2.步驟(註解配置)前面的1,2,3步和xml配置一樣2.4 配置進行織入,將通知織入目標對象中

applicationContext.xml:









通知類:

//通知類
@Aspect
//表示該類是一個通知類
public class MyAdvice {
@Pointcut("execution(* cn.itcast.service.*ServiceImpl.*(..))")
public void pc{}
//前置通知
//指定該方法是前置通知,並制定切入點
@Before("MyAdvice.pc")
public void before{
System.out.println("這是前置通知!!");
}
//後置通知
@AfterReturning("execution(* cn.itcast.service.*ServiceImpl.*(..))")
public void afterReturning{
System.out.println("這是後置通知(如果出現異常不會調用)!!");
}
//環繞通知
@Around("execution(* cn.itcast.service.*ServiceImpl.*(..))")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("這是環繞通知之前的部分!!");
Object proceed = pjp.proceed;//調用目標方法
System.out.println("這是環繞通知之後的部分!!");
return proceed;
}
//異常通知
@AfterThrowing("execution(* cn.itcast.service.*ServiceImpl.*(..))")
public void afterException{
System.out.println("出事啦!出現異常了!!");
}
//後置通知
@After("execution(* cn.itcast.service.*ServiceImpl.*(..))")
public void after{
System.out.println("這是後置通知(出現異常也會調用)!!");
}
}

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

小程序解析html標籤wxPrase插件
aws ec2的iam role深度解析
OpenStack(企業私有雲)萬里長征第三步——調試成功
Javascript中的類型轉換
第46篇 多線程如何排隊執行

TAG:達人科技 |

您可能感興趣

WordPress怎麼生成sitemap.xml?插件XML Sitemap & Google News
MultiScatter:3ds Max的插件|可與V-Ray和Mental Ray渲染系統配合使用!
WordPress Simple Social Buttons插件安全漏洞
spring boot 2.x 整合mybaits及分頁插件
WordPress Plugin AutoSuggest插件SQL注入復現與分析
WordPress代碼高亮插件Pure-Highlightjs
IDEA中安裝MongoDB插件-再也無要nosql manager for mongodb
Flow:實用的burp插件;Slingshot APT攻擊
WordPress插件YITH WooCommerce Wishlist SQL注入漏洞
WordPress登錄頁面美化插件:Login Designer
AMD為macOS版Blender和Maya發布Radeon ProRender插件
微軟的Unity插件Project Acoustics為VR提供雲端3D音頻
Photoshop詳細解析CameraRaw插件使用
bootstrap Fileinput插件的使用實例
Photoshop圓角編輯神器,功能增強插件-Corner Editor 2015
Adobe Premiere Pro CC新插件增加Insta360 Pro視頻支持
星風PresenZ技術將以插件形式支持Autodesk 3ds Max
被EDIUS官方「點名」的音頻插件:Restauration Suite
Chromium版Edge瀏覽器上手:已支持原生Chrome插件
Oculus Unity插件宣布新增Windows MR支持