Spring5.x 版本中 Web 模塊的 Portlet 組件已經(jīng)被廢棄掉,同時增加了用于異步響應(yīng)式處理的 WebFlux 組件。

Spring 各個模塊的依賴關(guān)系

Spring Test

Spring 團隊提倡測試驅(qū)動開發(fā)(TDD)。有了控制反轉(zhuǎn) (IoC)的幫助,單元測試和集成測試變得更簡單。Spring 的測試模塊對 JUnit、TestNG、Mockito、PowerMock 等常用測試框架有良好的支持,并且提供了模擬 Http 請求等基于 Spring 的測試功能。

Core Container

Spring 框架的核心模塊,主要提供 IoC 依賴注入功能的支持,由 Beans 模塊、Core 核心模塊、Context 上下文模塊和 SpEL 表達式語言模塊組成。沒有這些核心容器,也就不可能有 AOP、Web 等上層的功能。

AOP、Aspects、Instrumentation和Messaging

這些模塊提供了面向切面編程、與 AspectJ 的集成支持、為 JVM 添加代理的功能、基礎(chǔ)的報文傳送應(yīng)用支持等。

Data Access/Integration

這些模塊提供了對數(shù)據(jù)庫訪問的抽象、編程和聲明式事務(wù)管理、對 ORM 框架的支持、OXM 支持、JMS 支持等。

Spring Web

提供了基本的 Web 開發(fā)集成特性、Spring MVC Web 框架實現(xiàn)、WebSocket 支持、WebFlux 支持等。

Spring、SpringMVC、SpringBoot之間的關(guān)系

Spring 包含多個功能模塊,其中最重要的是 Spring-Core 模塊,其他模塊如 Spring MVC 的功能實現(xiàn)基本都依賴于該模塊。Spring MVC 是 Spring 中的一個重要模塊,主要賦予快速構(gòu)建 MVC 架構(gòu)的能力。Spring Boot 旨在簡化 Spring 開發(fā),減少配置文件,實現(xiàn)開箱即用。

HelloWorld-xml

案例

案例源碼點擊 這里

引入依賴


    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}

POJO – User

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;
    }
}

DAO 獲取 POJO, UserDaoServiceImpl (mock 數(shù)據(jù))

public class UserDaoImpl{
    public List findUserList() {
        return Collections.singletonList(new User("seven", 18));
    }
}

業(yè)務(wù)層 UserServiceImpl(調(diào)用DAO層)

public class UserServiceImpl {
    private UserDaoImpl userDao;
    public void setUserDao(UserDaoImpl userDao) {
        this.userDao = userDao;
    }
    public List findUserList() {
        return userDao.findUserList();
    }
}

攔截所有service中的方法,并輸出記錄

@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();
    }
}

添加并增加spring.xml和aspects.xml





APP中設(shè)置xml文件

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()));
    }
}

運行結(jié)果:
運行結(jié)果

如何體現(xiàn)的Spring優(yōu)勢

控制反轉(zhuǎn) – IOC

控制反轉(zhuǎn)是一種設(shè)計思想,Spring 通過 IoC 容器來實現(xiàn)這一特性。用戶不再需要手動創(chuàng)建對象,而是由 Spring 框架負責管理對象的創(chuàng)建和生命周期。這不僅提高了代碼的可維護性,還使得組件之間的依賴關(guān)系變得更加清晰。

面向切面 – AOP

AOP 的核心思想是將業(yè)務(wù)邏輯與系統(tǒng)服務(wù)邏輯分開,通過定義切面來實現(xiàn)解耦。Spring 的 AOP 模塊通過動態(tài)代理技術(shù)在運行時將切面邏輯織入到目標對象中,從而實現(xiàn)日志記錄、事務(wù)管理等功能的非侵入式集成。

Spring框架逐步簡化開發(fā)

Java 配置方式改造

在傳統(tǒng)的 Spring 配置中,XML 被廣泛用于定義 Bean 和其依賴關(guān)系。然而,XML 配置容易變得冗長和難以維護。Java 配置通過注解和 Java 類來替代 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 版本開始支持基于注解的配置。通過注解,開發(fā)者可以簡化 Bean 的定義和依賴注入過程。

代碼示例

@Service
public class UserServiceImpl {
    @Autowired
    private UserDaoImpl userDao;
    public List findUserList() {
        return userDao.findUserList();
    }
}

SpringBoot托管配置

Spring Boot 通過約定大于配置的理念,進一步簡化了 Spring 應(yīng)用的開發(fā)。它提供了一系列的 starter 包,幫助開發(fā)者快速搭建項目。

FAQ

  1. 問:Spring 框架的主要特點是什么?

  2. 問:如何使用 Spring 進行依賴注入?

  3. 問:什么是 Spring Boot?

  4. 問:Spring AOP 是如何工作的?

  5. 問:Spring MVC 和 Spring Boot 有什么區(qū)別?

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業(yè)工程師共享工作效率翻倍的秘密
返回頂部
上一篇
Linux 獲取命令執(zhí)行輸出結(jié)果的藝術(shù)
下一篇
方差分析(ANOVA)詳解與應(yīng)用
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
国产九色sp调教91| 国产在线一区观看| 亚洲成a人在线观看| 一本久久综合亚洲鲁鲁五月天| 中文字幕免费一区| av亚洲精华国产精华| 一区二区三区影院| 91精品综合久久久久久| 久草这里只有精品视频| 久久亚洲春色中文字幕久久久| 激情亚洲综合在线| 亚洲欧美另类图片小说| 欧美精品久久天天躁| 国产一区二区三区av电影| 国产清纯白嫩初高生在线观看91| 99久久精品免费| 日韩电影网1区2区| 亚洲欧洲国产日韩| 日韩精品在线看片z| av爱爱亚洲一区| 日韩**一区毛片| 亚洲精品一卡二卡| 久久久精品国产免费观看同学| 99久久综合精品| 精品中文av资源站在线观看| 亚洲精品欧美专区| 久久久99精品免费观看| 欧美亚洲国产一区二区三区va| 国产麻豆精品一区二区| 亚洲国产精品久久久久婷婷884| 国产人成亚洲第一网站在线播放| 欧美日韩精品高清| 91色视频在线| 99热在这里有精品免费| 国产精品中文有码| 久久精品国产免费看久久精品| 亚洲国产精品综合小说图片区| 亚洲图片你懂的| 亚洲国产精品黑人久久久| 欧美成人一区二区| 日韩女优av电影| 欧美成人三级在线| 欧美日韩成人综合天天影院 | heyzo一本久久综合| 日韩和的一区二区| 亚洲成人黄色影院| 天天影视涩香欲综合网| 亚洲成a人v欧美综合天堂| 亚洲一区二区在线免费看| 亚洲美女免费在线| 亚洲一二三区在线观看| 一区二区三区精品在线| 亚洲精品日产精品乱码不卡| 亚洲色图在线看| 亚洲一区二区三区视频在线| 亚洲一卡二卡三卡四卡五卡| 天天操天天综合网| 久久激五月天综合精品| 国产91丝袜在线播放| yourporn久久国产精品| 91麻豆蜜桃一区二区三区| 在线观看av一区二区| 欧美老人xxxx18| 精品少妇一区二区三区在线播放| 久久久久久夜精品精品免费| 成人免费在线播放视频| 亚洲与欧洲av电影| 免费看精品久久片| 成人精品在线视频观看| 色综合久久综合网欧美综合网| 欧美日韩亚洲综合| 国产欧美久久久精品影院| 亚洲国产wwwccc36天堂| 国产一区福利在线| 欧美日韩精品一区二区天天拍小说 | 无码av中文一区二区三区桃花岛| 日韩av一区二区三区四区| 成人美女在线观看| 欧美日韩二区三区| 国产精品看片你懂得| 喷白浆一区二区| 91视视频在线直接观看在线看网页在线看 | 国产人成亚洲第一网站在线播放| 亚洲一区二区三区小说| 国产成人免费视频一区| 欧美老肥妇做.爰bbww视频| 国产精品福利一区二区三区| 极品少妇一区二区三区精品视频| 欧美在线免费播放| 亚洲视频在线观看三级| 国产精品一线二线三线精华| 91精品国产91久久久久久一区二区| 最新久久zyz资源站| 国产91丝袜在线播放| 精品国产电影一区二区| 日韩中文字幕一区二区三区| 欧美三级一区二区| 一区二区欧美视频| 色哟哟日韩精品| 136国产福利精品导航| 国产成人超碰人人澡人人澡| 精品va天堂亚洲国产| 麻豆精品久久久| 欧美一区二区成人6969| 日韩av电影天堂| 欧美一区二区三区免费观看视频 | 日韩久久一区二区| 日本精品一级二级| 一区二区三区 在线观看视频| 91蜜桃网址入口| 亚洲制服丝袜av| 欧美精品丝袜中出| 九一九一国产精品| 久久精品人人做人人爽人人| 国产91丝袜在线播放| 日韩理论片在线| 欧美系列在线观看| 蜜桃视频一区二区三区 | 国产日产欧产精品推荐色| 成人综合婷婷国产精品久久免费| 国产精品动漫网站| 欧美日韩在线三区| 极品少妇一区二区| 亚洲欧美日韩系列| 欧美一区2区视频在线观看| 久久99精品久久久久久国产越南 | 久久亚洲私人国产精品va媚药| 国产精品亚洲综合一区在线观看| 久久久精品国产免费观看同学| 成人av电影免费在线播放| 亚洲人成人一区二区在线观看| 欧美日韩不卡一区| 国产乱码精品1区2区3区| 成人免费在线视频观看| 91精品国产欧美一区二区| 国产在线乱码一区二区三区| 成人免费在线视频观看| 6080yy午夜一二三区久久| 国产精品亚洲视频| 日韩电影免费一区| 亚洲欧美一区二区在线观看| 欧美一区二区三区公司| 成人精品在线视频观看| 日本不卡视频一二三区| 亚洲欧洲日产国产综合网| 91精品国产乱| 欧美性感一区二区三区| 国产精品69毛片高清亚洲| 视频一区二区国产| 亚洲日本护士毛茸茸| 国产日韩成人精品| 欧美精品一区二区蜜臀亚洲| 欧美色网一区二区| 91玉足脚交白嫩脚丫在线播放| 精久久久久久久久久久| 免费三级欧美电影| 天堂久久一区二区三区| 一区二区三区国产精华| 成人欧美一区二区三区黑人麻豆 | 国产人成一区二区三区影院| 欧美精品亚洲二区| 在线观看国产91| 色综合天天狠狠| 97久久超碰国产精品| 国产成人在线视频网站| 国产一区二区福利| 高清不卡一区二区在线| 高清不卡一区二区| proumb性欧美在线观看| 成人ar影院免费观看视频| 国产99久久久久久免费看农村| 国产精品自拍在线| 激情综合色播激情啊| 国产一区二区三区免费在线观看| 激情图区综合网| 成人白浆超碰人人人人| 成人动漫一区二区在线| 色偷偷成人一区二区三区91| 欧美亚洲国产bt| 欧美一区二区三区系列电影| 欧美电视剧免费观看| 久久久亚洲欧洲日产国码αv| 欧美激情一区在线| 亚洲素人一区二区| 日韩精品电影在线观看| 精品制服美女丁香| 成人av网址在线| 欧美日韩不卡视频| 国产午夜精品福利| 亚洲精品国久久99热| 奇米888四色在线精品| 国产91在线看| 欧美日韩1区2区| 国产亚洲短视频| 亚洲国产精品久久艾草纯爱| 精品一区二区三区欧美| 日本久久精品电影| 久久久久9999亚洲精品| 亚洲成在线观看| 91亚洲国产成人精品一区二三|