国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

初識Spring-ioc

這篇具有很好參考價值的文章主要介紹了初識Spring-ioc。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. Spring的簡介

Spring是一個開源的Java開發(fā)框架,用于構(gòu)建企業(yè)級應(yīng)用程序。它提供了一種輕量級的、非侵入式的編程模型,使得開發(fā)者可以更加簡單地構(gòu)建可擴展、可維護的應(yīng)用程序。
Spring框架的核心特性包括依賴注入(Dependency Injection)和面向切面編程(Aspect-Oriented
Programming)。依賴注入使得開發(fā)者可以將對象之間的依賴關(guān)系交由框架來管理,從而降低了組件之間的耦合度。面向切面編程則提供了一種在應(yīng)用程序中橫切關(guān)注點的方式,例如日志記錄、事務(wù)管理等。
Spring框架還提供了許多其他功能和模塊,如Spring MVC用于構(gòu)建Web應(yīng)用程序、Spring
Data用于簡化數(shù)據(jù)庫訪問、Spring
Security用于身份驗證和授權(quán)等。這些模塊可以根據(jù)需要進行選擇和集成,使得開發(fā)者可以根據(jù)自己的需求來構(gòu)建定制化的應(yīng)用程序。
總的來說,Spring框架通過提供一種簡單、靈活的開發(fā)方式,幫助開發(fā)者構(gòu)建高效、可擴展的Java應(yīng)用程序。它已經(jīng)成為Java開發(fā)領(lǐng)域中最受歡迎的框架之一,并被廣泛應(yīng)用于各種企業(yè)級應(yīng)用程序的開發(fā)中。

2.Spring容器ioc的特點

Spring的IOC(Inversion of Control)容器是Spring框架的核心組件之一,它具有以下特點:
依賴注入(Dependency Injection)
:IOC容器通過依賴注入的方式管理對象之間的依賴關(guān)系。開發(fā)者只需要定義好對象之間的依賴關(guān)系,IOC容器會負(fù)責(zé)實例化對象并自動注入所需的依賴,從而降低了組件之間的耦合度。
配置靈活性:IOC容器使用外部配置文件(如XML、注解或Java配置類)來描述對象的創(chuàng)建和依賴關(guān)系,這使得應(yīng)用程序的配置更加靈活。開發(fā)者可以根據(jù)需要修改配置文件,而無需修改源代碼,從而實現(xiàn)應(yīng)用程序的靈活性和可維護性。
單例管理:IOC容器默認(rèn)情況下管理的對象是單例的,即每個對象在容器中只有一個實例。這樣可以節(jié)省資源并提高性能。開發(fā)者也可以通過配置來改變對象的作用域,如原型(每次請求都創(chuàng)建新的實例)或會話(每個會話創(chuàng)建一個實例)。
生命周期管理:IOC容器負(fù)責(zé)管理對象的生命周期,包括對象的創(chuàng)建、初始化和銷毀。開發(fā)者可以通過配置回調(diào)方法(如初始化方法和銷毀方法)來實現(xiàn)對對象生命周期的控制。
AOP集成:IOC容器與面向切面編程(AOP)緊密集成,可以通過配置將橫切關(guān)注點(如日志、事務(wù)管理)應(yīng)用到應(yīng)用程序中的多個對象上,從而提高代碼的重用性和可維護性。
總的來說,Spring的IOC容器通過依賴注入、靈活的配置、單例管理、生命周期管理和AOP集成等特點,提供了一種簡單、靈活、可擴展的對象管理機制,幫助開發(fā)者構(gòu)建可維護、可測試的應(yīng)用程序。

3.spring注入方式

Spring框架提供了多種方式來實現(xiàn)依賴注入(Dependency Injection): 構(gòu)造函數(shù)注入(Constructor
Injection):通過構(gòu)造函數(shù)來注入依賴。在類的構(gòu)造函數(shù)中聲明依賴的參數(shù),Spring容器會根據(jù)配置自動實例化并注入所需的依賴。

1.Setter方法注入(Setter Injection):通過Setter方法來注入依賴。在類中定義對應(yīng)的Setter方法,并在方法中接收依賴的參數(shù),Spring容器會通過調(diào)用Setter方法來注入所需的依賴。

模擬:

package com.niyin.ioc.web;

import com.niyin.ioc.impl.UserServiceImpl;
import com.niyin.ioc.impl.UserServiceImpl1;
import com.niyin.ioc.service.UserService;

import java.util.List;

public class GoodsAction {
    private UserService userService;
 private String gname;
 private  int age;
 private List<String>peoples;

    public String getGname() {
        return gname;
    }

    public void setGname(String gname) {
        this.gname = gname;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<String> getPeoples() {
        return peoples;
    }

    public void setPeoples(List<String> peoples) {
        this.peoples = peoples;
    }

    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public String update(){
        userService.update();
        return "list";
    }
public void pros(){
    System.out.println(this.gname);
    System.out.println(this.age);
    System.out.println(this.peoples);
};

}

package com.niyin.ioc.demo;

import com.niyin.ioc.web.GoodsAction;
import com.niyin.ioc.web.UserAction;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class demo1 {
    public static void main(String[] args) {

        ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext("/sping-context.xml");


        UserAction userAction= (UserAction) context.getBean("userAction");
        userAction.update();
        GoodsAction goodsAction= (GoodsAction) context.getBean("goodsAction");
        goodsAction.update();
        System.out.println("--------------------------------");
        goodsAction.pros();
        System.out.println("---------------------------------");
        userAction.pros();
    }


}

 <bean class="com.niyin.ioc.web.GoodsAction" id="goodsAction">

        <property name="userService" ref="userService"></property>
    <property name="gname" value="雨傘"></property>
        <property name="age" value="1"></property>
        <property name="peoples" >
            <list>
                <value>男的</value>
                <value>女的</value>

            </list>
        </property>

    </bean>

2.構(gòu)造函數(shù)注入

package com.niyin.ioc.web;

import com.niyin.ioc.impl.UserServiceImpl;
import com.niyin.ioc.service.UserService;

import java.util.List;

public class UserAction {

    private UserService userService;
    private String uname;
    private int age;
    private List<String>hobby;

    public UserAction() {
    }

    public UserAction(String uname, int age, List<String> hobby) {
        this.uname = uname;
        this.age = age;
        this.hobby = hobby;
    }

    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public String update(){
        userService.update();
        return "list";
    }
    public void pros(){
        System.out.println(this.uname);
        System.out.println(this.age);
        System.out.println(this.hobby);
    };
}

package com.niyin.ioc.demo;

import com.niyin.ioc.web.GoodsAction;
import com.niyin.ioc.web.UserAction;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class demo1 {
    public static void main(String[] args) {

        ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext("/sping-context.xml");


        UserAction userAction= (UserAction) context.getBean("userAction");
        userAction.update();
        GoodsAction goodsAction= (GoodsAction) context.getBean("goodsAction");
        goodsAction.update();
        System.out.println("--------------------------------");
        goodsAction.pros();
        System.out.println("---------------------------------");
        userAction.pros();
    }


}

<bean class="com.niyin.ioc.web.UserAction" id="userAction">

    <property name="userService" ref="userService"></property>
<constructor-arg name="uname" value="袁輝sb"></constructor-arg>
    <constructor-arg name="age" value="11"></constructor-arg>
    <constructor-arg name="hobby" >
        <list>
            <value>
                農(nóng)村
            </value>
            <value>
                農(nóng)村
            </value>
            <value>
                農(nóng)村
            </value>

        </list>
    </constructor-arg>

</bean>

3.在Spring IOC(控制反轉(zhuǎn))中,"byname"和"bytype"是兩種不同的依賴注入方式。

ByName(按名稱):當(dāng)使用ByName方式進行依賴注入時,Spring容器會根據(jù)依賴對象的名稱來進行匹配和注入。在配置文件中,需要使用元素的name屬性來指定依賴對象的名稱。Spring容器會在容器中查找與指定名稱匹配的bean,并將其注入到相應(yīng)的屬性中。

4.1 使用Spring MVC框架:Spring MVC是Spring框架的一部分,用于開發(fā)基于MVC模式的Web應(yīng)用程序。通過配置Spring MVC,可以將請求映射到相應(yīng)的控制器,并實現(xiàn)靈活的請求處理和視圖渲染。
4.2 使用Spring Boot:Spring Boot是Spring框架的擴展,用于簡化Spring應(yīng)用程序的開發(fā)和部署。Spring Boot提供了內(nèi)嵌的Web容器,可以直接運行Spring應(yīng)用程序,無需額外配置。
4.3 使用Spring和其他Web容器的集成:Spring框架可以與其他常見的Web容器(如Tomcat、Jetty等)進行集成,通過配置文件或注解來實現(xiàn)。
配置監(jiān)聽器

1.監(jiān)聽器

package com.niyin.ioc.listerner;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class SpingLoadListener implements ServletContextListener {
    public void contextInitialized(ServletContextEvent sce) {

        ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext("/sping-context.xml");
ServletContext servletContext= sce.getServletContext();
servletContext.setAttribute("springContext",context);

    }
}

2.servlet

package com.niyin.ioc.web;

import com.niyin.ioc.service.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/userList")
public class userservlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
     }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        ClassPathXmlApplicationContext context= (ClassPathXmlApplicationContext) req.getServletContext().getAttribute("spingContext");
         UserService userService= (UserService) context.getBean("userService");
        System.out.println(userService);
        userService.update();
    }
}

4.總結(jié)

本文深入探討了Spring IOC容器的工作原理,包括配置文件、Bean的定義、實例化、裝配、生命周期管理和獲取等方面。通過理解和應(yīng)用Spring IOC容器,我們可以更好地開發(fā)和管理Java應(yīng)用程序,提高代碼的可維護性和可測試性。希望本文對讀者有所幫助,謝謝閱讀!文章來源地址http://www.zghlxwxcb.cn/news/detail-652663.html

到了這里,關(guān)于初識Spring-ioc的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Java EE】Spring核心思想(一)——IOC

    【Java EE】Spring核心思想(一)——IOC

    通過前?的學(xué)習(xí), 我們知道了Spring是?個開源框架, 他讓我們的開發(fā)更加簡單. 他?持?泛的應(yīng)?場 景, 有著活躍?龐?的社區(qū), 這也是Spring能夠?久不衰的原因. 但是這個概念相對來說, 還是?較抽象. 我們??句更具體的話來概括Spring, 那就是: Spring 是包含了眾多?具?法的

    2024年04月23日
    瀏覽(20)
  • 【Java面試】Spring中的IOC和AOP

    IOC:控制反轉(zhuǎn)也叫依賴注入。利用了工廠模式 將對象交給容器管理,你只需要在spring配置文件總配置相應(yīng)的bean,以及設(shè)置相關(guān)的屬性,讓spring容器來生成類的實例對象以及管理對象。在spring容器啟動的時候,spring會把你在配置文件中配置的bean都初始化好,然后在你需要調(diào)用的

    2024年02月10日
    瀏覽(27)
  • 【Java學(xué)習(xí)】 Spring的基礎(chǔ)理解 IOC、AOP以及事務(wù)

    【Java學(xué)習(xí)】 Spring的基礎(chǔ)理解 IOC、AOP以及事務(wù)

    ? ? 官網(wǎng):?https://spring.io/projects/spring-framework#overview ? ??官方下載工具:?https://repo.spring.io/release/org/springframework/spring/ ? ? github下載:?https://github.com/spring-projects/spring-framework ?? ?maven依賴: 1.spring全家桶的結(jié)構(gòu)構(gòu)圖: ?? ??? ? ? ? 最下邊的是測試單元? ?其中spring封裝

    2024年02月09日
    瀏覽(29)
  • java八股文面試[Spring]——如何實現(xiàn)一個IOC容器

    java八股文面試[Spring]——如何實現(xiàn)一個IOC容器

    ????????IOC不是一種技術(shù),只是一種思想,一個重要的面向?qū)ο缶幊痰姆▌t,它能指導(dǎo)我們?nèi)绾卧O(shè)計出 松耦合 ,更優(yōu)良的程序。傳統(tǒng)應(yīng)用程序都是由我們在類內(nèi)部主動創(chuàng)建依賴對象,從而導(dǎo)致類與類之間高耦合,難于測試;有了IOC容器后,把 創(chuàng)建和查找依賴對象 的控制

    2024年02月10日
    瀏覽(32)
  • Spring IOC容器:讓Java對象的管理和配置更簡單

    在Java開發(fā)中,我們經(jīng)常需要創(chuàng)建和使用各種Java對象,例如實體類,服務(wù)類,控制器類等。這些對象之間通常存在著一定的依賴關(guān)系,例如一個服務(wù)類可能需要調(diào)用另一個服務(wù)類或一個數(shù)據(jù)訪問類的方法。為了創(chuàng)建和使用這些對象,我們通常需要做以下幾件事: 在代碼中通過

    2024年02月11日
    瀏覽(24)
  • Java Spring IoC&DI :探索Java Spring中控制反轉(zhuǎn)和依賴注入的威力,增強靈活性和可維護性

    Java Spring IoC&DI :探索Java Spring中控制反轉(zhuǎn)和依賴注入的威力,增強靈活性和可維護性

    ?? 博客主頁:從零開始的-CodeNinja之路 ? 收錄文章:Java Spring IoCDI :探索Java Spring中控制反轉(zhuǎn)和依賴注入的威力,增強靈活性和可維護性 ??歡迎大家點贊??評論??收藏?文章 我們一下要學(xué)習(xí)的內(nèi)容都是為了實現(xiàn)?內(nèi)聚低耦合來進行的 軟件設(shè)計原則:?內(nèi)聚低耦合. ?內(nèi)聚指

    2024年04月15日
    瀏覽(23)
  • Java面試題:你知道Spring的IOC嗎?那么,它為什么這么重要呢?

    Spring的IOC(控制反轉(zhuǎn))是一種設(shè)計模式,它允許開發(fā)者將對象的創(chuàng)建和管理交給Spring框架來完成。在Spring中,IOC允許開發(fā)者將對象依賴關(guān)系從代碼中分離出來,從而使代碼更加靈活、可重用和易于管理。 IoC 全稱Inverse of Control( 反向控制或控制反轉(zhuǎn) )。 在類和類之間存在控

    2024年04月28日
    瀏覽(58)
  • Java后端07(Spring)

    ?涉及的設(shè)計模式:單例模式,簡單工廠模式,代理模式,觀察者模式,反射,注解。。。。。 ?在傳統(tǒng)模式下,對象的創(chuàng)建和賦值,都是由開發(fā)者自己手動完成,事實情況下,開發(fā)者只關(guān)心如何獲取賦值好的對象,但是并不希望自己手動進行創(chuàng)建對象和賦值的事情(sprin

    2024年02月13日
    瀏覽(25)
  • 【Java EE】初識Spring Web MVC

    【Java EE】初識Spring Web MVC

    Spring Web MVC 是 基于 Servlet API 構(gòu)建的原始 Web 框架 ,從?開始就包含在Spring框架中。它的正式名稱“Spring Web MVC”來?其源模塊的名稱(Spring-webmvc),但它通常被稱為)Spring MVC). Servlet是?種實現(xiàn)動態(tài)??的技術(shù).準(zhǔn)確來講Servlet是?套Java Web 開發(fā)的規(guī)范,或者說是?套Java Web 開發(fā)的

    2024年04月10日
    瀏覽(30)
  • Java后端07(Spring未完成)

    ?涉及的設(shè)計模式:單例模式,簡單工廠模式,代理模式,觀察者模式,反射,注解。。。。。 ?在傳統(tǒng)模式下,對象的創(chuàng)建和賦值,都是由開發(fā)者自己手動完成,事實情況下,開發(fā)者只關(guān)心如何獲取賦值好的對象,但是并不希望自己手動進行創(chuàng)建對象和賦值的事情(sprin

    2024年02月14日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包