日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring使用与两大核心(Bean,AOP)

發布時間:2023/12/8 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring使用与两大核心(Bean,AOP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring框架

哈哈哈Spring官網的標題直接說明了我們為什么要使用spring。接下來我們看看一下Spring的使用步驟。

Spring入門使用

1.下載Spring依賴
先進入官網

點擊進入github

進入后往下來,找到Access to Binaries
Access to Binaries

點擊進入找到

找到發行版本


然后依次點擊org/、springframework/、spring/、到達以下頁面,選擇你所需要的版本。

2.導入jar包,我們初期所需要的jar包為以下幾個

博主在這里提供一個網盤鏈接,供大家直接下載。
提取碼abcd
3.創建ApplicationContext.xml配置文件
注意下文件必須放在源文件夾,這里給出了3.2版本的頭部。

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.2.xsd">

Spring輕松使用

spring的核心操作單元是以一個一個的bean為組件進行操作,因此我們需要知道bean是什么以及如何在xml文件中配置一個bean。

bean的定義:在 Spring 中,構成應用程序主干并由Spring IoC容器管理的對象稱為bean。bean是一個由Spring IoC容器實例化、組裝和管理的對象。
通過這段話我們大概明白了bean是由一個叫ioc容器幫我們創建對象,不是我們自己創建的,bean由ioc容器實例化和管理

(博主的個人理解:bean其實就對應著Java里面的對象,我們在Java中通過對象完成各種操作,Spring以封裝好的bean給我們提供各種操作。注意:默認獲取的bean是單例的。

然后看看完上面相信你大概對bean有了個了解,但是此時你肯定又會由一個疑問那么ioc是什么東西?

ioc的定義:ioc(Inversion of Control)

控制反轉通過依賴注入(DI)方式實現對象之間的松耦合關系。
程序運行時,依賴對象由【輔助程序】動態生成并注入到被依賴對象中,動態綁定兩者的使用關系。 Spring
IoC容器就是這樣的輔助程序,它負責對象的生成和依賴的注入,讓后在交由我們使用。
簡而言之,就是:IoC就是一個對象定義其依賴關系而不創建它們的過程。

控制反轉一般可以這樣理解,假設我們有一個User類(用戶類)和一個Candy類(糖果類),用戶都擁有自己的糖果。
我們的正常操作是自己手動創建用戶對象,然后定義用戶對象與某個糖果對象之間的依賴關系。
然后Spring提供的操作是,我們先定義好用戶與糖果的依賴關系,然后spring通過ioc容器幫我們創建用戶實例。
這就是對ioc的簡單理解,我們在定義依賴關系的操作就叫做(DI)。

Spring的使用實例

1.定義Java程序類,程序類中有id,username,sign等對象屬性。

public class User {private Integer id;private String username;private String sign;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getSign() {return sign;}public void setSign(String sign) {this.sign = sign;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", sign='" + sign + '\'' +'}';} }

2.定義dao層

public interface UserDao {public boolean addUser(User user); }

3.設定實現類

public class UserDaoImpl implements UserDao {@Overridepublic boolean addUser(User user) {System.out.println("-----------數據連接層daoImpl 正在執行-----------");System.out.println("需要添加的對象為"+user);System.out.println("-----------數據添加成功-----------------------");return true;} }

4.定義service層

public interface UserService {public boolean addUser(User user); }

5.設置實現類

public class UserServiceImpl implements UserService{UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}@Overridepublic boolean addUser(User user) {return userDao.addUser(user);} }

6.在xml文件中注冊bean組件

<bean id="userDao" class="com.openlab.dao.impl.UserDaoImpl"></bean><bean id="userService" class="com.openlab.service.impl.UserServiceImpl"><property name="userDao" ref="userDao"></property></bean>

可以看到,原來我們在userService中需要手動創建dao的實現類,現在我們通過xml文件進行實現類的依賴關系的定義。
7.測試程序

@org.junit.Testpublic void testUserServiceAndAop(){ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");UserService service = (UserService) context.getBean("userService");User user = new User();user.setId(1001);user.setUsername("李淳罡");user.setSign("劍來");service.addUser(user);}

8.測試結果

AOP編程

AOP(Aspect-OrientedProgramming)下面以簡單的圖來看一下Aop到底是什么。


假設上面為我們正常程序的的執行流程,每一個方法的執行可以看為程序執行的一個節點(切入點),現在假設我們有一個需求,需要在執行C方法時加入一些新的代碼,正常來說我們可能就需要更改源碼,但是我們可以AOP編程,就可以避免更改源碼。
面向切面編程通俗的說就是在某個切入點,我們增加新的方法來進行功能的解耦與拓展,使本來只需要執行一個節點方法的位置增加了(織入)許多個節點方法(多個點不就可以認為組成了一個面嗎,而且相較于程序執行軸來說,這個些點理論上使增加在同一個時間點上的,所以是切面)。

實際上在Spring中實現AOP編程默認使用的是JDK中的動態代理模式來完成的。通過代理方法,實現增強處理

AOP編程實例

在上面代碼的基礎上,我們對保存用戶的功能進行拓展,在保存前先進行對象信息的打印(前置增強處理),在保存后打印方法的返回值(后置增強處理
1.書寫日志類(功能拓展)

public class UserLogger {private static final Logger LOGGER = Logger.getLogger(UserLogger.class);public void beforeProcess(JoinPoint joinPoint){System.out.println();System.out.println();System.out.println();System.out.println("---------前置增強服務正在執行------------");System.out.println("切點信息:切點執行方法"+joinPoint.getSignature().getName()+"切點方法所需要的參數+param"+ Arrays.toString(joinPoint.getArgs()));System.out.println("---------前置增強服務執行完畢------------");System.out.println();System.out.println();System.out.println();}public void afterProcess(JoinPoint joinPoint ,Object result){System.out.println();System.out.println();System.out.println();System.out.println("---------后置增強服務正在執行------------");System.out.println("切點信息:切點執行方法"+joinPoint.getSignature().getName()+"切點方法返回值為:"+ result);System.out.println("---------后置增強服務執行完畢------------");System.out.println();System.out.println();System.out.println();} }

2.將日志類注冊為Java組件

<!--配置增強服務類--><bean id="userLogger" class="com.openlab.logger.UserLogger"></bean>

3.AOP配置

  • 配置切點
  • 配置切面
  • 配置增強處理
  • <!--aop配置--><aop:config><aop:pointcut id="pointcut" expression="execution(* com.openlab.dao.UserDao.addUser(..))" ></aop:pointcut><!--切面配置--><aop:aspect ref="userLogger"><aop:before method="beforeProcess" pointcut-ref="pointcut"></aop:before><aop:after-returning method="afterProcess" pointcut-ref="pointcut" returning="result"></aop:after-returning></aop:aspect></aop:config>

    4.測試類

    @org.junit.Testpublic void testUserServiceAndAop(){ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");UserService service = (UserService) context.getBean("userService");User user = new User();user.setId(1001);user.setUsername("李淳罡");user.setSign("劍來");service.addUser(user);}

    測試結果

    博主才疏學淺,博文中難免存在錯誤,希望大家不吝指正!

    總結

    以上是生活随笔為你收集整理的Spring使用与两大核心(Bean,AOP)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。