中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

西安網(wǎng)站建設(shè)維護如何申請一個網(wǎng)站域名

西安網(wǎng)站建設(shè)維護,如何申請一個網(wǎng)站域名,網(wǎng)站建設(shè)技術(shù)難題,嘉興模板開發(fā)建站1.什么是IOC和AOP?了解么? IOC(控制反轉(zhuǎn))和AOP(面向切面編程) 1. IOC(控制反轉(zhuǎn)) 概念 IOC(Inversion of Control)是面向?qū)ο缶幊讨械囊粋€設(shè)計原則&#xf…

1.什么是IOC和AOP?了解么?

IOC(控制反轉(zhuǎn))和AOP(面向切面編程)

1. IOC(控制反轉(zhuǎn))

概念

????????IOC(Inversion of Control)是面向?qū)ο缶幊讨械囊粋€設(shè)計原則,意味著控制的反轉(zhuǎn)或轉(zhuǎn)移。簡單來說,IOC把對象的創(chuàng)建和依賴關(guān)系的管理交給容器,而不是由程序員手動管理。通過IOC,程序中的組件之間變得松耦合,組件可以獨立測試和維護。

public class Service {private Database database;public Service() {this.database = new Database();  // 這里硬編碼了依賴}public void processData() {database.save();}
}

傳統(tǒng)的創(chuàng)建對象,是我們自己手動來創(chuàng)建的,這樣來說就是高耦合(每次都創(chuàng)建對象,麻煩)

通過 IOC,我們將依賴的對象(如 Database)從 Service 類中分離出來,由外部容器(比如 Spring 容器)來管理。這樣,Service 類就可以聚焦于業(yè)務(wù)邏輯,容器負責(zé)對象的創(chuàng)建和注入

Spring框架提供了兩種常見的依賴注入方式:

  1. 構(gòu)造器注入: 通過構(gòu)造函數(shù)注入依賴的對象。

    @Component
    public class Service {private final Database database;@Autowiredpublic Service(Database database) {this.database = database;}public void processData() {database.save();}
    }
    
  2. Setter注入: 通過setter方法注入依賴的對象。

    @Component
    public class Service {private Database database;@Autowiredpublic void setDatabase(Database database) {this.database = database;}public void processData() {database.save();}
    }
    

在開發(fā)過程中呢一般結(jié)合注解,不會手動去創(chuàng)建對象,太麻煩

優(yōu)勢
  • 松耦合:減少了類之間的耦合,增加了靈活性。
  • 易于測試:可以輕松模擬依賴,便于單元測試。
  • 可擴展性:容器可以動態(tài)注入不同的實現(xiàn)類,使得程序更容易擴展。

    2. AOP(面向切面編程)

    概念

    AOP(Aspect-Oriented Programming,面向切面編程)是一種編程范式,旨在將橫切關(guān)注點(cross-cutting concerns)從業(yè)務(wù)邏輯中分離出來。橫切關(guān)注點指的是那些與核心業(yè)務(wù)邏輯無關(guān),但又需要在多個地方執(zhí)行的功能,如日志、性能監(jiān)控、安全控制、事務(wù)管理等。

核心概念
  • 切面(Aspect):表示橫切關(guān)注點的模塊化。它可以定義在多個類中應(yīng)用的邏輯(如日志記錄、事務(wù)管理等)。
  • 連接點(Join Point):是程序執(zhí)行的一個點,通常是方法調(diào)用。AOP可以在這些點上執(zhí)行特定的動作。
  • 通知(Advice):是橫切邏輯的具體實現(xiàn)。通知可以在切入點前(before)、后(after)或方法執(zhí)行拋出異常時(around)執(zhí)行。
  • 切入點(Pointcut):是AOP應(yīng)用到哪些方法的定義。通過切入點表達式來指定切面的作用范圍。
  • 織入(Weaving):將切面應(yīng)用到目標對象(或類)上的過程??椚肟梢园l(fā)生在編譯時、類加載時或運行時。

2.這個核心概念了解就行了,重要的是如何去應(yīng)用,這時候面試官會問你,你在哪些場景會用到AOP?你是怎么用的呢??

Spring中的AOP實現(xiàn)

Spring AOP是基于代理的,它可以通過動態(tài)代理或CGLIB代理來實現(xiàn)。常見的使用場景包括:

  • 事務(wù)管理:自動處理方法執(zhí)行前后事務(wù)的提交與回滾。
  • 日志記錄:在方法調(diào)用前后自動記錄日志。
  • 性能監(jiān)控:監(jiān)控方法執(zhí)行的時間。

你可以說,我之前的項目,在寫日志的時候用到過。。。。自己去查怎么用的不想全寫,寫一個日志的吧

(1)創(chuàng)建要執(zhí)行業(yè)務(wù)的方法

import org.springframework.stereotype.Service;@Service
public class MyService {public void processData() {System.out.println("吃飯!干飯!");}public void saveData() {System.out.println("睡覺!");}
}

?(2)定義日志切面(Aspect)

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.After;
import org.springframework.stereotype.Component;@Aspect
@Component
public class LoggingAspect {// 記錄方法調(diào)用前的日志@Before("execution(* com.example.service.MyService.*(..))")public void logBefore(JoinPoint joinPoint) {System.out.println("Before method: " + joinPoint.getSignature().getName());}// 記錄方法調(diào)用后的日志@After("execution(* com.example.service.MyService.*(..))")public void logAfter(JoinPoint joinPoint) {System.out.println("After method: " + joinPoint.getSignature().getName());}
}
  1. @Aspect:標記該類為一個切面類,Spring會自動識別并將它作為AOP配置的一部分。
  2. @Component:使切面類成為Spring容器的一個組件,這樣Spring可以自動管理它。
  3. @Before:表示在目標方法執(zhí)行之前執(zhí)行logBefore方法。execution(* com.example.service.MyService.*(..))是一個切點表達式,表示我們要在MyService類中的所有方法執(zhí)行前記錄日志。
  4. @After:表示在目標方法執(zhí)行之后執(zhí)行logAfter方法。

JoinPoint 是AOP框架中的一個重要對象,表示方法執(zhí)行的連接點,它可以獲取方法的簽名、參數(shù)等信息。

(3)配置Spring AOP

如果你使用的是Spring Boot,Spring AOP默認已啟用,無需額外配置。如果是傳統(tǒng)的Spring項目,確保在applicationContext.xml中啟用AOP支持:

<!-- 啟用AOP支持 -->
<aop:aspectj-autoproxy /><!-- 配置切面 -->
<bean id="loggingAspect" class="com.example.aspect.LoggingAspect" />

(4)測試。。。

在Spring中,IOC和AOP通常是一起使用的。IOC負責(zé)管理對象的創(chuàng)建與依賴注入,而AOP則提供了一種機制,用于在不改變業(yè)務(wù)邏輯的前提下,增加額外的功能(如日志、事務(wù)管理等)

2.SpringBoot常用注解有哪些?

@RestController(@Controller@ResponseBody 的組合注解

@RestController
public class UserController {@GetMapping("/users")public List<User> getUsers() {return userService.getAllUsers();}@PostMapping("/users")public void createUser(@RequestBody User user) {userService.createUser(user);}
}

@Autowired、. @Component / @Service / @Controller

@Value

  • 用途:用于注入來自 application.propertiesapplication.yml 文件中的配置值??梢宰⑷胱址?、數(shù)字、布爾值等基本類型的數(shù)據(jù)。
    @Value("${server.port}")
    private String serverPort;
    

@Transactional

  • 用途:聲明方法或類的事務(wù)管理,確保在方法執(zhí)行過程中發(fā)生的所有數(shù)據(jù)庫操作要么全部成功,要么全部失敗回滾。

@CrossOrigin

  • 用途:用于啟用跨域支持,允許其他域名的客戶端訪問本應(yīng)用程序。通常用于 REST API 服務(wù)中。

@EnableScheduling

  • 用途:用于啟用 Spring 的任務(wù)調(diào)度功能,可以讓 Spring Boot 應(yīng)用程序支持定時任務(wù)。
@EnableScheduling
public class SchedulerConfig {@Scheduled(fixedRate = 5000)public void task() {System.out.println("This task runs every 5 seconds");}
}

3.什么情況下事務(wù)會失效?

(1)訪問權(quán)限問題:private修飾方法這樣會導(dǎo)致事務(wù)失效,spring 要求被代理方法必須是public的。

(2)方法用 final 修飾?

(3)方法內(nèi)部調(diào)用:有時候我們需要在某個 Service 類的某個方法中,調(diào)用另外一個事務(wù)方法

具體查看

spring 事務(wù)失效的 12 種場景_spring 截獲duplicatekeyexception 不拋異常-CSDN博客

http://www.risenshineclean.com/news/62121.html

相關(guān)文章:

  • 有哪些幫別人做任務(wù)賺錢的網(wǎng)站網(wǎng)絡(luò)推廣員每天的工作是什么
  • 衡水做wap網(wǎng)站建設(shè)廣州網(wǎng)站優(yōu)化價格
  • 上海建網(wǎng)站開發(fā)公seo計費系統(tǒng)開發(fā)
  • 外包是什么意思石家莊seo網(wǎng)站排名
  • 網(wǎng)站做排名2015新年桂林seo
  • centos搭建wordpressseo崗位是什么意思
  • 佛山房地產(chǎn)網(wǎng)站建設(shè)企業(yè)網(wǎng)址
  • 做娛樂網(wǎng)站彩票代理重慶森林影評
  • 自主做網(wǎng)站東莞seo技術(shù)培訓(xùn)
  • 通用網(wǎng)站建設(shè)如何做好精準營銷
  • wordpress更新文件放在哪里山東自助seo建站
  • 網(wǎng)站圖片用什么軟件做湖南中高風(fēng)險地區(qū)
  • 做網(wǎng)站找誰好廣州網(wǎng)站推廣
  • 網(wǎng)站icp備案認證怎么做世界足球排名最新
  • 做畢業(yè)網(wǎng)站的周記西安seo優(yōu)化公司
  • 個人網(wǎng)站引導(dǎo)頁源碼友情鏈接怎么購買
  • 定制網(wǎng)站制作公司怎么樣營銷軟文范例大全300字
  • 做視頻網(wǎng)站違法么色盲
  • 網(wǎng)站建設(shè)都有什么功能企業(yè)網(wǎng)站seo托管怎么做
  • 常州建站網(wǎng)站模板seo百度刷排名
  • 商貿(mào)公司的網(wǎng)站建設(shè)上海高端網(wǎng)站定制
  • jsp網(wǎng)站開發(fā)的兩種模式企業(yè)營銷策劃包括哪些內(nèi)容
  • 阿里云個人網(wǎng)站備案做淘客網(wǎng)絡(luò)營銷推廣方案怎么寫
  • 網(wǎng)站建設(shè)畢業(yè)答辯ppt模板公司網(wǎng)址有哪些
  • 做黑網(wǎng)站嗎b站24小時自助下單平臺網(wǎng)站
  • 制作網(wǎng)頁可以使用的網(wǎng)頁元素包括seo查詢友情鏈接
  • 怎么刪除寶塔其他版本建設(shè)的網(wǎng)站seo權(quán)威入門教程
  • 長沙做網(wǎng)站湖南微聯(lián)訊點靠譜百度廣告搜索推廣
  • 網(wǎng)站域名價值查詢獨立站推廣
  • 北京高端品牌網(wǎng)站建設(shè)寧波外貿(mào)網(wǎng)站推廣優(yōu)化