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

當前位置: 首頁 > news >正文

有實力營銷型網(wǎng)站建設湖北seo關鍵詞排名優(yōu)化軟件

有實力營銷型網(wǎng)站建設,湖北seo關鍵詞排名優(yōu)化軟件,網(wǎng)站建設定義是什么,小型企業(yè)網(wǎng)站開發(fā)價格文章目錄 spring概述Spring定義Spring核心Spring Framework的特點 基于注解管理bean依賴開啟組件掃描使用注解定義Bean案例:Autowired注入屬性注入set注入形參上注入只有一個構造函數(shù),無注解Autowire注解和Qualifier注解聯(lián)合 Resource注入Spring全注解開發(fā) spring概…

文章目錄

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

spring概述

Spring定義

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

Spring核心

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

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

Spring Framework的特點

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

基于注解管理bean

  • 從Java5開始,Java增加了對注解(Annotation)的支持,它是代碼中的一種特殊標記,可以在編譯、類加載和運行時被讀取,執(zhí)行相應的處理。開發(fā)人員可以通過注解在不改變原有代碼和邏輯的情況下,在源代碼中嵌入補充信息。
  • Spring從2.5版本開始提供了對注解技術的全面支持,我們可以使用注解來實現(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屬性設置)及其子包下的所有類,如果類上使用了@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提供了以下多個注解,這些注解可以直接標注在java類上,將它們定義成Spring Bean。

注解說明
@Component該注解用于描述Spring中的Bean,它是一個泛化的概念,僅僅標識容器中的一個組件(Bean),并且可以作用在任何層次,例如Service層、Dao層等,使用時只需將該注解標注在相應的類上即可。
@Respository注解用于數(shù)據(jù)訪問層(Dao層)的類標識為Spring中的Bean,功能與@Component相同。
@Service該注解通常作用在業(yè)務層(Service層),用于將業(yè)務層的類標識為Spring中的Bean,其功能與@Component相同。
@Controller該注解通常作用在控制層(如SpringMVC的Controller),用于將控制層的類標識為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屬性設置為false,表示注入的Bean存在或者不存在都沒關系,存在就注入,不存在也不報錯。

屬性注入

  • 控制器層controller.UserController
public class UserController {private UserService userService;public void addController(){System.out.println("controller is running...");userService.addService();}
}
  • 服務層service.UserService接口
public interface UserService {public void addService();
}
  • 服務層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類
// 第三種方式:構造方法注入
private UserService userService;@Autowired
public UserController(UserService userService) {this.userService = userService;
}

形參上注入

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

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

  • 修改UserController類
// 第五種方式:只有一個有參數(shù)構造函數(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.將構造函數(shù)注釋

@Resource注入

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

  • @Resource注解是JDK擴展包中的,也就是說屬于JDK的一部分。所以該解釋是標準注解,更加具有通用性,而@Autowired注解是Spring框架自己的。
  • @Resource注解默認根據(jù)名稱裝配byName,未指定name時,使用屬性名作為name,通過name找不到的話會自動啟動通過類型byType裝配。而@Autowired注解默認根據(jù)類型裝配byType,如果想根據(jù)名稱匹配,需要配合@Qualifier注解一起使用。
  • @Resource注解用在屬性上、setter方法上
  • @Autowired注解用在屬性上、setter方法上、構造方法上、構造方法參數(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/35149.html

相關文章:

  • 深圳哪里有做網(wǎng)站的優(yōu)化推廣網(wǎng)站推薦
  • 做哪個視頻網(wǎng)站賺錢今日油價92汽油價格調(diào)整最新消息
  • 網(wǎng)站開發(fā)前期調(diào)研黃山網(wǎng)站建設
  • 電子商務網(wǎng)站開發(fā)系統(tǒng)平臺百度營銷登錄
  • 優(yōu)化工具箱中國優(yōu)化網(wǎng)
  • 電子商務網(wǎng)站建設與維護讀書報告百度怎么做關鍵詞優(yōu)化
  • 網(wǎng)站做商標在那類怎么制作網(wǎng)頁頁面
  • 合肥品牌型網(wǎng)站建設地址上海短視頻seo優(yōu)化網(wǎng)站
  • 成都集團網(wǎng)站建設核酸檢測最新消息
  • 信息造價網(wǎng)seo是啥
  • 工業(yè)設計招聘1688seo優(yōu)化是什么
  • 別的網(wǎng)站可以做彈幕網(wǎng)絡營銷ppt
  • 網(wǎng)站建設zb533公司網(wǎng)站首頁排名
  • 福建省建設工程職業(yè)注冊網(wǎng)站如何建造一個網(wǎng)站
  • 純手工建網(wǎng)站新東方英語線下培訓學校
  • 安卓系統(tǒng)開發(fā)平臺搜索引擎優(yōu)化的技巧有哪些
  • 佛山網(wǎng)站設計多少錢而的跟地seo排名點擊軟件
  • 廣州網(wǎng)站開發(fā)企業(yè)網(wǎng)絡推廣的方法有哪些
  • 國內(nèi)做網(wǎng)站建設好的一起來看在線觀看免費
  • wordpress的url電腦優(yōu)化軟件哪個好用
  • 做網(wǎng)站的貼吧網(wǎng)絡營銷的步驟
  • 代辦公司注冊靠譜嗎優(yōu)化大師 win10下載
  • 靠做網(wǎng)站可以賺錢么想要網(wǎng)站推廣版
  • 網(wǎng)站域名在哪買近一周的新聞大事熱點
  • 備案時暫時關閉網(wǎng)站交換鏈接營銷的典型案例
  • 有哪些做任務網(wǎng)站學好seo
  • 濱州網(wǎng)站建設公司本周時事新聞概要10條
  • 網(wǎng)站做鏈輪會被懲罰嗎公司網(wǎng)站推廣方法
  • wordpress 換域名 全站301重定向百度熱搜榜小說排名
  • png圖片可以做網(wǎng)站圖標嗎建設網(wǎng)站需要多少錢