
在Nest.js中使用Redis:高效緩存與數(shù)據(jù)管理
Spring5.x 版本中 Web 模塊的 Portlet 組件已經(jīng)被廢棄掉,同時(shí)增加了用于異步響應(yīng)式處理的 WebFlux 組件。
Spring 團(tuán)隊(duì)提倡測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)。有了控制反轉(zhuǎn) (IoC)的幫助,單元測(cè)試和集成測(cè)試變得更簡(jiǎn)單。Spring 的測(cè)試模塊對(duì) JUnit、TestNG、Mockito、PowerMock 等常用測(cè)試框架有良好的支持,并且提供了模擬 Http 請(qǐng)求等基于 Spring 的測(cè)試功能。
Spring 框架的核心模塊,主要提供 IoC 依賴注入功能的支持,由 Beans 模塊、Core 核心模塊、Context 上下文模塊和 SpEL 表達(dá)式語(yǔ)言模塊組成。沒(méi)有這些核心容器,也就不可能有 AOP、Web 等上層的功能。
這些模塊提供了面向切面編程、與 AspectJ 的集成支持、為 JVM 添加代理的功能、基礎(chǔ)的報(bào)文傳送應(yīng)用支持等。
這些模塊提供了對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的抽象、編程和聲明式事務(wù)管理、對(duì) ORM 框架的支持、OXM 支持、JMS 支持等。
提供了基本的 Web 開(kāi)發(fā)集成特性、Spring MVC Web 框架實(shí)現(xiàn)、WebSocket 支持、WebFlux 支持等。
Spring 包含多個(gè)功能模塊,其中最重要的是 Spring-Core 模塊,其他模塊如 Spring MVC 的功能實(shí)現(xiàn)基本都依賴于該模塊。Spring MVC 是 Spring 中的一個(gè)重要模塊,主要賦予快速構(gòu)建 MVC 架構(gòu)的能力。Spring Boot 旨在簡(jiǎn)化 Spring 開(kāi)發(fā),減少配置文件,實(shí)現(xiàn)開(kāi)箱即用。
案例源碼點(diǎn)擊 這里。
8
8
5.3.37
1.9.6
org.springframework
spring-context
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.aspectj
aspectjweaver
${aspectjweaver.version}
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class UserDaoImpl{
public List findUserList() {
return Collections.singletonList(new User("seven", 18));
}
}
public class UserServiceImpl {
private UserDaoImpl userDao;
public void setUserDao(UserDaoImpl userDao) {
this.userDao = userDao;
}
public List findUserList() {
return userDao.findUserList();
}
}
@Aspect
public class LogAspect {
@Around("execution(* com.seven.springhelloworldxml.service.*.*(..))")
public Object businessService(ProceedingJoinPoint pjp) throws Throwable {
Method method = ((MethodSignature) pjp.getSignature()).getMethod();
System.out.println("execute method: " + method.getName());
return pjp.proceed();
}
}
public class APP {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("aspects.xml", "spring.xml");
UserServiceImpl service = context.getBean("userService", UserServiceImpl.class);
List userList = service.findUserList();
userList.forEach(a -> System.out.println(a.getName() + "," + a.getAge()));
}
}
運(yùn)行結(jié)果:
控制反轉(zhuǎn)是一種設(shè)計(jì)思想,Spring 通過(guò) IoC 容器來(lái)實(shí)現(xiàn)這一特性。用戶不再需要手動(dòng)創(chuàng)建對(duì)象,而是由 Spring 框架負(fù)責(zé)管理對(duì)象的創(chuàng)建和生命周期。這不僅提高了代碼的可維護(hù)性,還使得組件之間的依賴關(guān)系變得更加清晰。
AOP 的核心思想是將業(yè)務(wù)邏輯與系統(tǒng)服務(wù)邏輯分開(kāi),通過(guò)定義切面來(lái)實(shí)現(xiàn)解耦。Spring 的 AOP 模塊通過(guò)動(dòng)態(tài)代理技術(shù)在運(yùn)行時(shí)將切面邏輯織入到目標(biāo)對(duì)象中,從而實(shí)現(xiàn)日志記錄、事務(wù)管理等功能的非侵入式集成。
在傳統(tǒng)的 Spring 配置中,XML 被廣泛用于定義 Bean 和其依賴關(guān)系。然而,XML 配置容易變得冗長(zhǎng)和難以維護(hù)。Java 配置通過(guò)注解和 Java 類來(lái)替代 XML 配置,使得配置更加直觀和易于管理。
@EnableAspectJAutoProxy
@Configuration
public class BeansConfig {
@Bean("userDao")
public UserDaoImpl userDao() {
return new UserDaoImpl();
}
@Bean("userService")
public UserServiceImpl userService() {
UserServiceImpl userService = new UserServiceImpl();
userService.setUserDao(userDao());
return userService;
}
@Bean("logAspect")
public LogAspect logAspect() {
return new LogAspect();
}
}
隨著 Java 5 引入注解,Spring 從 2.5 版本開(kāi)始支持基于注解的配置。通過(guò)注解,開(kāi)發(fā)者可以簡(jiǎn)化 Bean 的定義和依賴注入過(guò)程。
@Service
public class UserServiceImpl {
@Autowired
private UserDaoImpl userDao;
public List findUserList() {
return userDao.findUserList();
}
}
Spring Boot 通過(guò)約定大于配置的理念,進(jìn)一步簡(jiǎn)化了 Spring 應(yīng)用的開(kāi)發(fā)。它提供了一系列的 starter 包,幫助開(kāi)發(fā)者快速搭建項(xiàng)目。
問(wèn):Spring 框架的主要特點(diǎn)是什么?
問(wèn):如何使用 Spring 進(jìn)行依賴注入?
問(wèn):什么是 Spring Boot?
問(wèn):Spring AOP 是如何工作的?
問(wèn):Spring MVC 和 Spring Boot 有什么區(qū)別?
在Nest.js中使用Redis:高效緩存與數(shù)據(jù)管理
Twitter網(wǎng)頁(yè)版:賬號(hào)管理與防封技巧(2024最新指南)
GoogLeNet架構(gòu)示意圖與代碼實(shí)現(xiàn)
提升集成:利用 GraphQL 和 MuleSoft 進(jìn)行現(xiàn)代 API 開(kāi)發(fā)
大模型RAG技術(shù):從入門(mén)到實(shí)踐
AI作用于影視后期有哪些具體案例?
RAG響應(yīng)速度優(yōu)化:提升性能的策略與實(shí)踐
Python工作流引擎的全面解析與應(yīng)用
鄰接矩陣與多階傳播在圖神經(jīng)網(wǎng)絡(luò)中的應(yīng)用
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)