最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring 自動(dòng)裝配和aop的使用

 更新時(shí)間:2018年07月30日 09:31:33   作者:zer0_li  
這篇文章主要介紹了spring 自動(dòng)裝配和aop的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

使用注解配置spring

一、步驟

1.為主配置文件引入新的命名空間(約束)
導(dǎo)入spring-context-4.2.xsd schema約束

2.開啟使用注解代理配置文件

// 在applicationContext.xml中
// 指定掃描cn.zhli13.bean包下所有類的注解
// 掃描時(shí)會(huì)掃描指定包下的所有子孫包
<context:component-scan base-package="cn.zhli13.bean"></context:component-scan>

3.在類中使用注解完成配置

// @Componet等

二、將對(duì)象注冊(cè)到容器

// 將user注冊(cè)到spring容器中,相當(dāng)于<bean name="user" class="cn.zhli13.bean.User"></bean>
@Componet("user")
@Service("user") // service層
@Controller("user") // web層
@Repository("user") // dao層

三、修改對(duì)象的作用范圍

// 指定對(duì)象的作用域
@Scope(scopeName="prototypo") // 非單例模式

四、值類型注入

// 1.通過反射的field賦值,破壞了封裝性
@Value("tom")
private String name;
// 2.通過set方法賦值,推薦使用
@Value("tom")
public void setName(String name) {
  this.name = name;
}

五、引用類型注入

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

六、初始化、銷毀方法

@PostConstruct // 在對(duì)象創(chuàng)建后調(diào)用,xml配置中的init-method
public void init () {
  System.out.println("init");
}
@PreDestory // 在對(duì)象銷毀之前調(diào)用,xml配置中的destory-method
public void destory () {
  System.out.println("destory");
}

spring與junit整合測試

一、導(dǎo)包

額外導(dǎo)入


二、配置注解

// 幫我們創(chuàng)建容器
@RunWith("SpringJunit4ClassRunner")
// 指定創(chuàng)建容器時(shí)使用哪個(gè)配置文件
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo {
  // 將名為user的對(duì)象注入到變量u中
  @Resource(name="user")
  private User u;
}

三、測試

@Test
public void fun1() {
  System.out.println(u);
}

spring中的aop

一、概念

aop思想:橫向重復(fù)、縱向抽取

aop概念:spring能夠?yàn)槿萜髦泄芾淼膶?duì)象生成動(dòng)態(tài)代理

二、spring實(shí)現(xiàn)aop的原理

1.動(dòng)態(tài)代理(優(yōu)先)
被代理對(duì)象必須要實(shí)現(xiàn)接口,才能產(chǎn)生代理對(duì)象.如果沒有接口將不能使用動(dòng)態(tài)代理技術(shù)

2.cglib代理(沒有接口)
第三方代理技術(shù),cglib代理.可以對(duì)任何類生成代理.代理的原理是對(duì)目標(biāo)對(duì)象進(jìn)行繼承代理. 如果目標(biāo)對(duì)象被final修飾.那么該類無法被cglib代理.

三、aop名詞學(xué)習(xí)

  • JoinPoint(連接點(diǎn)):目標(biāo)對(duì)象中,所有可以增強(qiáng)的方法
  • Pointcut(切入點(diǎn)):目標(biāo)對(duì)象,已經(jīng)增強(qiáng)的方法
  • Adice(通知/增強(qiáng)):被增強(qiáng)的代碼
  • Target(目標(biāo)對(duì)象):被代理的對(duì)象
  • Weaving(織入):將通知應(yīng)用到切入點(diǎn)的過程
  • Proxy(代理):將通知織入到目標(biāo)對(duì)象之后,形成代理對(duì)象
  • aspect(切面):切入點(diǎn) + 通知

spring aop的使用

一、導(dǎo)包

// 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

二、準(zhǔn)備目標(biāo)對(duì)象

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

三、準(zhǔn)備通知

// 1.使用注解方式
// 表示該類是一個(gè)通知類
@Aspect
public class MyAdvice {
  @Pointcut("execution(* cn.zhli13.service.*ServiceImpl.*(..))")
  public void pc(){}
  //前置通知
  //指定該方法是前置通知,并制定切入點(diǎn)
  @Before("MyAdvice.pc()")
  public void before(){
    System.out.println("這是前置通知!!");
  }
  //后置通知
  @AfterReturning("execution(* cn.zhli13.service.*ServiceImpl.*(..))")
  public void afterReturning(){
    System.out.println("這是后置通知(如果出現(xiàn)異常不會(huì)調(diào)用)!!");
  }
  //環(huán)繞通知
  @Around("execution(* cn.itcast.zhli13.*ServiceImpl.*(..))")
  public Object around(ProceedingJoinPoint pjp) throws Throwable {
    System.out.println("這是環(huán)繞通知之前的部分!!");
    Object proceed = pjp.proceed();//調(diào)用目標(biāo)方法
    System.out.println("這是環(huán)繞通知之后的部分!!");
    return proceed;
  }
  //異常通知
  @AfterThrowing("execution(* cn.zhli13.service.*ServiceImpl.*(..))")
  public void afterException(){
    System.out.println("出事啦!出現(xiàn)異常了!!");
  }
  //后置通知
  @After("execution(* cn.itcast.zhli13.*ServiceImpl.*(..))")
  public void after(){
    System.out.println("這是后置通知(出現(xiàn)異常也會(huì)調(diào)用)!!");
  }
}
// 2.使用xml配置
// 移除上述通知類的注解就是xml配置的通知類

四、配置進(jìn)行織入,將通知織入目標(biāo)對(duì)象中

// 1.使用注解配置 
<!-- 準(zhǔn)備工作: 導(dǎo)入aop(約束)命名空間 -->

<!-- 1.配置目標(biāo)對(duì)象 -->
<bean name="userService" class="cn.zhli13.service.UserServiceImpl" ></bean>
<!-- 2.配置通知對(duì)象 -->
<bean name="myAdvice" class="cn.zhli13.aop.MyAdvice" ></bean>
<!-- 3.開啟使用注解完成織入 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
// 2.使用xml配置
<!-- 準(zhǔn)備工作: 導(dǎo)入aop(約束)命名空間 -->
<!-- 1.配置目標(biāo)對(duì)象 -->
<bean name="userService" class="cn.zhli13.service.UserServiceImpl" ></bean>
<!-- 2.配置通知對(duì)象 -->
<bean name="myAdvice" class="cn.zhli13.aop.MyAdvice" ></bean>
<!-- 3.配置將通知織入目標(biāo)對(duì)象 -->
<aop:config>
  <!-- 配置切入點(diǎn) 
    public void cn.zhli13.service.UserServiceImpl.save() 
    void cn.zhli13.service.UserServiceImpl.save()
    * cn.zhli13.service.UserServiceImpl.save()
    * cn.zhli13.service.UserServiceImpl.*()
    
    * cn.zhli13.service.*ServiceImpl.*(..)
    * cn.zhli13.service..*ServiceImpl.*(..)
  -->
  <aop:pointcut expression="execution(* cn.zhli13.service.*ServiceImpl.*(..))" id="pc"/>
  <aop:aspect ref="myAdvice" >
    <!-- 指定名為before方法作為前置通知 -->
    <aop:before method="before" pointcut-ref="pc" />
    <!-- 后置 -->
    <aop:after-returning method="afterReturning" pointcut-ref="pc" />
    <!-- 環(huán)繞通知 -->
    <aop:around method="around" pointcut-ref="pc" />
    <!-- 異常攔截通知 -->
    <aop:after-throwing method="afterException" pointcut-ref="pc"/>
    <!-- 后置 -->
    <aop:after method="after" pointcut-ref="pc"/>
  </aop:aspect>
</aop:config>

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)時(shí)間和字符串互轉(zhuǎn)

    Java實(shí)現(xiàn)時(shí)間和字符串互轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了如何通過Java實(shí)現(xiàn)時(shí)間對(duì)象和字符串互相轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • maven 打包時(shí)間戳問題

    maven 打包時(shí)間戳問題

    這篇文章主要介紹了maven 打包時(shí)間戳問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • ConcurrentHashMap是如何實(shí)現(xiàn)線程安全的你知道嗎

    ConcurrentHashMap是如何實(shí)現(xiàn)線程安全的你知道嗎

    這篇文章主要介紹了ConcurrentHashMap是如何實(shí)現(xiàn)線程安全的你知道嗎,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 一文吃透消息隊(duì)列RocketMQ實(shí)現(xiàn)消費(fèi)冪等原理

    一文吃透消息隊(duì)列RocketMQ實(shí)現(xiàn)消費(fèi)冪等原理

    這篇文章主要介紹了消息隊(duì)列RocketMQ實(shí)現(xiàn)消費(fèi)冪等的全面講解,幫助大家吃透RocketMQ消息隊(duì)列消費(fèi)冪等,更好的的應(yīng)用與工作實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • springboot+idea熱部署的實(shí)現(xiàn)方法(自動(dòng)刷新)

    springboot+idea熱部署的實(shí)現(xiàn)方法(自動(dòng)刷新)

    這篇文章主要介紹了springboot+idea熱部署的實(shí)現(xiàn)方法(自動(dòng)刷新),本文分步驟通過實(shí)例代碼截圖相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀

    Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀

    這篇文章主要介紹了Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀,UDP協(xié)議全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無連接的協(xié)議,在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層,需要的朋友可以參考下
    2023-12-12
  • java實(shí)現(xiàn)圖片寫入高清字體及帶邊框的方法

    java實(shí)現(xiàn)圖片寫入高清字體及帶邊框的方法

    這篇文章主要介紹了java實(shí)現(xiàn)圖片寫入高清字體及帶邊框的方法,涉及java針對(duì)圖片及文字的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Java實(shí)現(xiàn)獲取控制臺(tái)輸出結(jié)果轉(zhuǎn)換為變量的詳細(xì)操作

    Java實(shí)現(xiàn)獲取控制臺(tái)輸出結(jié)果轉(zhuǎn)換為變量的詳細(xì)操作

    在Java編程中,有時(shí)需將控制臺(tái)的輸出捕獲為字符串,以便于后續(xù)的處理或測試,這種需求在日志記錄、單元測試或調(diào)試時(shí)尤為常見,下面,將通過詳細(xì)步驟來介紹如何使用ByteArrayOutputStream和PrintStream來實(shí)現(xiàn)這一功能,需要的朋友可以參考下
    2024-06-06
  • 解析Java內(nèi)存分配和回收策略以及MinorGC、MajorGC、FullGC

    解析Java內(nèi)存分配和回收策略以及MinorGC、MajorGC、FullGC

    本節(jié)將會(huì)介紹一下:對(duì)象的內(nèi)存分配與回收策略;對(duì)象何時(shí)進(jìn)入新生代、老年代;MinorGC、MajorGC、FullGC的定義區(qū)別和觸發(fā)條件;還有通過圖示展示了GC的過程。
    2021-09-09
  • Java 仿天貓服裝商城系統(tǒng)的實(shí)現(xiàn)流程

    Java 仿天貓服裝商城系統(tǒng)的實(shí)現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)仿天貓服裝商城系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11

最新評(píng)論

祥云县| 仙桃市| 凯里市| 安远县| 博客| 通许县| 自治县| 杭锦后旗| 鄂州市| 孟州市| 青冈县| 思南县| 长宁县| 淄博市| 石渠县| 平定县| 德令哈市| 天全县| 庄河市| 洛宁县| 遵化市| 灌云县| 洛隆县| 南和县| 耒阳市| 盐津县| 邹城市| 北票市| 平潭县| 沽源县| 娱乐| 彩票| 仪征市| 温宿县| 布尔津县| 图们市| 祁门县| 星座| 忻城县| 雅江县| 邢台县|