javascript
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版本的頭部。
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.測試程序
8.測試結果
AOP編程
AOP(Aspect-OrientedProgramming)下面以簡單的圖來看一下Aop到底是什么。
假設上面為我們正常程序的的執行流程,每一個方法的執行可以看為程序執行的一個節點(切入點),現在假設我們有一個需求,需要在執行C方法時加入一些新的代碼,正常來說我們可能就需要更改源碼,但是我們可以AOP編程,就可以避免更改源碼。
面向切面編程通俗的說就是在某個切入點,我們增加新的方法來進行功能的解耦與拓展,使本來只需要執行一個節點方法的位置增加了(織入)許多個節點方法(多個點不就可以認為組成了一個面嗎,而且相較于程序執行軸來說,這個些點理論上使增加在同一個時間點上的,所以是切面)。
實際上在Spring中實現AOP編程默認使用的是JDK中的動態代理模式來完成的。通過代理方法,實現增強處理。
AOP編程實例
在上面代碼的基礎上,我們對保存用戶的功能進行拓展,在保存前先進行對象信息的打印(前置增強處理),在保存后打印方法的返回值(后置增強處理)
1.書寫日志類(功能拓展)
2.將日志類注冊為Java組件
<!--配置增強服務類--><bean id="userLogger" class="com.openlab.logger.UserLogger"></bean>3.AOP配置
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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈罗python的学费多少-数据分析面试
- 下一篇: Wordpress建站流程-最新手把手详