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

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

合江做網(wǎng)站網(wǎng)推廣公司

合江做網(wǎng)站,網(wǎng)推廣公司,北京做網(wǎng)站設(shè)計招聘,印刷網(wǎng)站源碼文章目錄 spring概述Spring定義Spring核心Spring Framework的特點 基于注解管理bean依賴開啟組件掃描使用注解定義Bean案例:Autowired注入屬性注入set注入形參上注入只有一個構(gòu)造函數(shù),無注解Autowire注解和Qualifier注解聯(lián)合 Resource注入Spring全注解開發(fā) spring概…

文章目錄

  • spring概述
    • Spring定義
    • Spring核心
    • Spring Framework的特點
  • 基于注解管理bean
    • 依賴
    • 開啟組件掃描
    • 使用注解定義Bean
    • 案例:
    • @Autowired注入
      • 屬性注入
      • set注入
      • 形參上注入
      • 只有一個構(gòu)造函數(shù),無注解
      • @Autowire注解和@Qualifier注解聯(lián)合
    • @Resource注入
    • Spring全注解開發(fā)

spring概述

Spring定義

  • Spring是一款主流的Java EE 輕量級開源框架,目的是用于簡化Java企業(yè)級引用的開發(fā)難度和開發(fā)周期。從簡單性、可測試性和松耦合度的角度而言,任何Java應(yīng)用都可以從Spring中受益。Spring框架提供自己提供功能外,還提供整合其他技術(shù)和框架的能力。
  • Spring自誕生以來備受青睞,一直被廣大開發(fā)人員作為Java企業(yè)級應(yīng)用程序開發(fā)的首選。時至今日,Spring儼然成為了Java EE的代名詞,成為了構(gòu)建Java EE 應(yīng)用的事實標(biāo)準(zhǔn)。
  • 自2004年4月,Spring1.0 版正式發(fā)布以來,Spring已經(jīng)步入到了第6個大版本,即 Spring6,本課程采用Spring5.3.24正式版本。Spring6版本支持JDK17
    在這里插入圖片描述

Spring核心

Spring指的是Spring Framework,通常我們稱之為Spring框架。Spring框架是一個分層的面向切面的Java應(yīng)用程序的一站式解決框架,它是Spring技術(shù)棧的核心和基礎(chǔ),是為了解決企業(yè)級引用開發(fā)的復(fù)雜性而創(chuàng)建的。

  • Spring有兩個核心模塊:IoC和AOP。
  • Ioc:Inverse of Control的簡寫,為 控制反轉(zhuǎn),指把創(chuàng)建對象交給Spring進行管理。
  • OP:Aspect Oriented Programming 的簡寫,為 面向?qū)ο缶幊?。AOP用來封裝多個類的公共行為,將那些與業(yè)務(wù)無關(guān),卻為業(yè)務(wù)模塊共同調(diào)用的邏輯封裝起來,減少系統(tǒng)的重復(fù)代碼,降低模塊間的耦合度。另外,AOP還解決一些系統(tǒng)層面上的問題,比如日志、事務(wù)、權(quán)限等。

Spring Framework的特點

  • 控制反轉(zhuǎn):IoC,反轉(zhuǎn)資源獲取方向;把自己創(chuàng)建的資源、向環(huán)境索取資源變?yōu)榄h(huán)境將資源準(zhǔn)備好,我們享受資源注入。
  • 面向切面編程:AOP,在不修改源代碼的基礎(chǔ)上增強代碼功能。
  • 容器:Spring IoC是一個容器,因為它包含并管理組件對象的生命周期;組件享受到了容器化的管理,替程序員屏蔽了組件創(chuàng)建過程中的大量細節(jié),極大降低了使用門檻,大幅度提高了開發(fā)效率。
  • 一站式:在IOC和AOP的基礎(chǔ)上可以整合各種企業(yè)應(yīng)用的開源框架和優(yōu)秀的第三方庫,而且在Spring旗下的項目已經(jīng)覆蓋了廣泛領(lǐng)域,很多方面的功能性需求可以在Spring Framework 的基礎(chǔ)上全部使用Spring來實現(xiàn)。

基于注解管理bean

  • 從Java5開始,Java增加了對注解(Annotation)的支持,它是代碼中的一種特殊標(biāo)記,可以在編譯、類加載和運行時被讀取,執(zhí)行相應(yīng)的處理。開發(fā)人員可以通過注解在不改變原有代碼和邏輯的情況下,在源代碼中嵌入補充信息。
  • Spring從2.5版本開始提供了對注解技術(shù)的全面支持,我們可以使用注解來實現(xiàn)自動裝配,簡化Spring的xml配置。
  • Spring通過注解實現(xiàn)自動裝配:
  1. 引入依賴
  2. 開啟組件掃描
  3. 使用注解定義Bean
  4. 依賴注入

依賴

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.24</version></dependency>
</dependencies>

開啟組件掃描

  • Spring默認不使用注解裝配Bean,因此需要在Spring的xml配置中,通過context:component-scan元素開啟Spring Beans的自動掃描功能。開啟此功能后,Spring會自動從掃描指定的包(base-package屬性設(shè)置)及其子包下的所有類,如果類上使用了@Component注解,就將該類裝配到容器中。
  • resources目錄下創(chuàng)建spring配置文件 bean.xml
<?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:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 2.開啟組件掃描,讓spring可以通過注解方式實現(xiàn)bean管理,包括創(chuàng)建對象、屬性注入 --><!-- base-package:掃描哪個包中的注解,在com.text的包或者子包中建了類,在類上、屬性上、方法上加了spring的@Component注解,這里就能掃描到--><context:component-scan base-package="com.text.spring"></context:component-scan>  
</beans>

使用注解定義Bean

Spring提供了以下多個注解,這些注解可以直接標(biāo)注在java類上,將它們定義成Spring Bean。

注解說明
@Component該注解用于描述Spring中的Bean,它是一個泛化的概念,僅僅標(biāo)識容器中的一個組件(Bean),并且可以作用在任何層次,例如Service層、Dao層等,使用時只需將該注解標(biāo)注在相應(yīng)的類上即可。
@Respository注解用于數(shù)據(jù)訪問層(Dao層)的類標(biāo)識為Spring中的Bean,功能與@Component相同。
@Service該注解通常作用在業(yè)務(wù)層(Service層),用于將業(yè)務(wù)層的類標(biāo)識為Spring中的Bean,其功能與@Component相同。
@Controller該注解通常作用在控制層(如SpringMVC的Controller),用于將控制層的類標(biāo)識為Spring中的Bean,其功能與@Component相同。

案例:

// value可以不寫,默認為類名首字母小寫
//@Component(value = "user")  // <bean id="user" class="xxx">
//@Repository
//@Service
@Controller
public class User {}
  • 測試
public class TestUser {@Testpublic void testUser(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");User user = context.getBean("user", User.class);System.out.println("user = " + user);}
}

@Autowired注入

  • 單獨使用@Autowired注解,默認根據(jù)類型裝配(byType)
  • @Autowired注解有一個required屬性,默認值是true,表示在注入的時候要求被注入的Bean必須存在,如果不存在則報錯。如果required屬性設(shè)置為false,表示注入的Bean存在或者不存在都沒關(guān)系,存在就注入,不存在也不報錯。

屬性注入

  • 控制器層controller.UserController
public class UserController {private UserService userService;public void addController(){System.out.println("controller is running...");userService.addService();}
}
  • 服務(wù)層service.UserService接口
public interface UserService {public void addService();
}
  • 服務(wù)層service.UserServiceImpl接口的實現(xiàn)類
public class UserServiceImpl implements UserService {@Overridepublic void addService() {System.out.println("service is running...");}
}
  • 在UserController和UserSerivceImpl中添加@Controller注解和@Service注解
  • 在UserController中注入UserServiceImpl
@Controller
public class UserController {// 注入service// 第一種方式:屬性注入@Autowired // 根據(jù)類型找到對象,完成注入private UserService userService;
}
  • 測試類測試autowired.TestUserController
public class TestUserController {@Testpublic void testUserController(){ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");UserController controller = context.getBean(UserController.class);controller.addController();}
}

set注入

  • 修改UserController類
// 第三種方式:構(gòu)造方法注入
private UserService userService;@Autowired
public UserController(UserService userService) {this.userService = userService;
}

形參上注入

  • 修改UserController類
// 第四種方式:形參注入
private UserService userService;public UserController(@Autowired UserService userService) {this.userService = userService;
}

只有一個構(gòu)造函數(shù),無注解

  • 修改UserController類
// 第五種方式:只有一個有參數(shù)構(gòu)造函數(shù),無注解
private UserService userService;public UserController(UserService userService) {this.userService = userService;
}

@Autowire注解和@Qualifier注解聯(lián)合

  • 再創(chuàng)建一個UserService接口的實現(xiàn)類service.UserServiceImpl2
@Service
public class UserServiceImpl2 implements UserService{@Overridepublic void addService() {System.out.println("service2 is running...");}
}
  • 測試發(fā)現(xiàn)報錯

    因為UserService有兩個實現(xiàn)類,而@Autowired注解根據(jù)byType定位,所以找到了兩個實現(xiàn)類

  • 解決:修改UserController (使用兩個注解)

// 1.第六種方式:根據(jù)類型和名稱一起注入
@Autowired
@Qualifier(value = "userServiceImpl2")  // 類名首字母小寫
private UserService userService;// 2.將構(gòu)造函數(shù)注釋

@Resource注入

@Resource注解也可以完成屬性注入。它和@Autowired注解的區(qū)別如下

  • @Resource注解是JDK擴展包中的,也就是說屬于JDK的一部分。所以該解釋是標(biāo)準(zhǔn)注解,更加具有通用性,而@Autowired注解是Spring框架自己的。
  • @Resource注解默認根據(jù)名稱裝配byName,未指定name時,使用屬性名作為name,通過name找不到的話會自動啟動通過類型byType裝配。而@Autowired注解默認根據(jù)類型裝配byType,如果想根據(jù)名稱匹配,需要配合@Qualifier注解一起使用。
  • @Resource注解用在屬性上、setter方法上
  • @Autowired注解用在屬性上、setter方法上、構(gòu)造方法上、構(gòu)造方法參數(shù)上。
    案例
  • 工程下創(chuàng)建包 resource,和之前一樣,創(chuàng)建controller和service兩個包,并創(chuàng)建UserController類和UserService接口以及該接口的實現(xiàn)類UserServiceImpl
  • 修改UserController
@Controller("myUserController")
public class UserController {// 根據(jù)名稱進行注入@Resource(name="myUserService")private UserService userService;public void add(){System.out.println("controller...");userService.add();}
}
  • 修改ServiceControllerImpl1
@Service("myUserService")
public class UserServiceImpl implements UserService {
  1. 指定@Resource中的name,則根據(jù)名稱裝配
  2. 未指定name時,則根據(jù)屬性名裝配
  3. 未指定name,屬性名也不一致,則根據(jù)類型裝配

Spring全注解開發(fā)

全注解開發(fā)就是不再使用spring配置文件了,寫一個配置類來代替配置文件。

  • 工程下創(chuàng)建包:config,創(chuàng)建類SpringConfig
// 配置類
@Configuration
// 開啟組件掃描
@ComponentScan("cn.tedu.spring")
public class SpringConfig {
}
  • 在resource下創(chuàng)建測試類進行測試
public class TestUserControllerAnno {public static void main(String[] args) {// 加載配置類ApplicationContext context =new AnnotationConfigApplicationContext(SpringConfig.class);UserController controller = context.getBean(UserController.class);controller.add();}
}
http://www.risenshineclean.com/news/65606.html

相關(guān)文章:

  • 油金地 做網(wǎng)站品牌推廣營銷平臺
  • 音樂盒的網(wǎng)站怎么做代寫稿子的平臺
  • 深圳建站公司模板網(wǎng)絡(luò)營銷公司排行
  • 怎么制作app網(wǎng)站千萬不要去電商公司上班
  • 制作網(wǎng)站公司年收入多少百度指數(shù)關(guān)鍵詞未收錄怎么辦
  • 平安做計劃書的網(wǎng)站人力資源培訓(xùn)
  • 網(wǎng)站建設(shè)公司專業(yè)的建站優(yōu)化公司百度seo怎么優(yōu)化
  • 每月網(wǎng)站流量網(wǎng)絡(luò)營銷常用的工具
  • 加關(guān)鍵詞的網(wǎng)站石家莊網(wǎng)站seo外包
  • 上海網(wǎng)站企業(yè)軟文推廣是什么
  • 網(wǎng)站后期維護收費熱門網(wǎng)站排名
  • 貿(mào)易網(wǎng)站建設(shè)sem投放是什么意思
  • 網(wǎng)頁制作工具的選擇與網(wǎng)站整體風(fēng)格網(wǎng)絡(luò)廣告推廣服務(wù)
  • 老司機做爰網(wǎng)站老師影音百度托管運營哪家好
  • 家裝設(shè)計師培訓(xùn)學(xué)校湖南企業(yè)seo優(yōu)化推薦
  • 新手做網(wǎng)站做什么樣的網(wǎng)站建設(shè)公司哪個好呀
  • 怎么在微信做企業(yè)網(wǎng)站app開發(fā)費用標(biāo)準(zhǔn)
  • 有哪些設(shè)計的很優(yōu)秀的網(wǎng)站企業(yè)培訓(xùn)內(nèi)容
  • 沈陽智能模板建站軟文營銷范文100字
  • 武漢軟件100強企業(yè)名單北京官方seo搜索引擎優(yōu)化推薦
  • 資陽網(wǎng)站設(shè)計搜狗搜索網(wǎng)
  • 互聯(lián)網(wǎng)行業(yè) 英文郴州seo網(wǎng)絡(luò)優(yōu)化
  • 濟南做網(wǎng)站多少錢站長工具pr值查詢
  • 全免費云游戲網(wǎng)頁在線玩seo快速排名軟件價格
  • 東莞seo網(wǎng)站推廣個人怎么做免費百度推廣
  • 重慶網(wǎng)站建設(shè)有限公司拼多多運營
  • 網(wǎng)站運營模式有哪些短網(wǎng)址鏈接生成
  • 現(xiàn)在最靠譜的購物網(wǎng)站有哪些天津seo實戰(zhàn)培訓(xùn)
  • 網(wǎng)站開發(fā)師培訓(xùn)網(wǎng)絡(luò)營銷手段有哪四種
  • 深圳網(wǎng)站開發(fā)優(yōu)化營商環(huán)境 助推高質(zhì)量發(fā)展