成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Spring詳解3.Bean的裝配

endiat / 2653人閱讀

摘要:的依賴(lài)關(guān)系,根據(jù)依賴(lài)關(guān)系配置完成之間的裝配。的行為信息,如生命周期范圍及生命周期各過(guò)程的回調(diào)函數(shù)。使用該種裝配模式時(shí),優(yōu)先匹配參數(shù)最多的構(gòu)造函數(shù)。如果提供了默認(rèn)的構(gòu)造函數(shù),則采用否則采用進(jìn)行自動(dòng)裝配。

點(diǎn)擊進(jìn)入我的博客 1 Spring容器與Bean配置信息
Bean配置信息

Bean配置信息是Bean的元數(shù)據(jù)信息,它由一下4個(gè)方面組成:

Bean的實(shí)現(xiàn)類(lèi)

Bean的屬性信息,如數(shù)據(jù)庫(kù)的連接數(shù)、用戶名、密碼。

Bean的依賴(lài)關(guān)系,Spring根據(jù)依賴(lài)關(guān)系配置完成Bean之間的裝配。

Bean的行為信息,如生命周期范圍及生命周期各過(guò)程的回調(diào)函數(shù)。

Bean元數(shù)據(jù)信息

Bean元數(shù)據(jù)信息在Spring容器中的內(nèi)部對(duì)應(yīng)物是一個(gè)個(gè)BeanDefinition形成的Bean注冊(cè)表,Spring實(shí)現(xiàn)了Bean元數(shù)據(jù)信息內(nèi)部表示和外部定義之間的解耦。

Spring支持的配置方式

Spring1.0僅支持基于XML的配置,Spring2.0新增基于注解配置的支持,Spring3.0新增基于Java類(lèi)配置的支持,Spring4.0則新增給予Groovy動(dòng)態(tài)語(yǔ)言配置的支持。

2 基于XML的配置 2.1 理解XML與Schema


(1)處是默認(rèn)命名空間,無(wú)命名空間前綴的元素屬于默認(rèn)命名空間。

(2)xsi標(biāo)準(zhǔn)命名空間,用于指定自定義命名空間的Schema文件

(3)自定義命名空間的簡(jiǎn)稱(chēng),可以任意命名

(4)自定義命名空間的全稱(chēng),必須在xsi命名空間為其指定空間對(duì)應(yīng)的Schema文件,可以任意命名,習(xí)慣上用文檔發(fā)布機(jī)構(gòu)的相關(guān)網(wǎng)站目錄。

(5)為每個(gè)命名空間指定Schema文件位置,

詳解xmlns

定義:xml namespace的縮寫(xiě),可譯為“XML命名空間”。

作用:防止XML文檔含有相同的元素命名沖突,如

既可以表示表格,又可以表示桌子。如果增加了命名空間如
就可以使兩者區(qū)分開(kāi)來(lái)。

使用:xmlns:namespace-prefix="namespaceURI",其中namespace-prefix為自定義前綴,只要在這個(gè)XML文檔中保證前綴不重復(fù)即可;namespaceURI是這個(gè)前綴對(duì)應(yīng)的XML Namespace的定義。

理解xsi:schemaLocation

xsi:schemaLocation定義了XML Namespace和對(duì)應(yīng)的 XSD(Xml Schema Definition)文檔的位置的關(guān)系。它的值由一個(gè)或多個(gè)URI引用對(duì)組成,兩個(gè)URI之間以空白符分隔(空格和換行均可)。第一個(gè)URI是定義的 XML Namespace的值,第二個(gè)URI給出Schema文檔的位置,Schema處理器將從這個(gè)位置讀取Schema文檔,該文檔的targetNamespace必須與第一個(gè)URI相匹配。例如:


這里表示Namespace為http://www.springframework.or...://www.springframework.org/schema/context/spring-context.xsd。

2.2 使用XML裝配Bean
直接裝配Bean


    

id:用于表示一個(gè)Bean的名稱(chēng),在容器內(nèi)不能重復(fù);不可以配置多個(gè)id。

name:用于表示一個(gè)Bean的名稱(chēng),在容器內(nèi)不能重復(fù);可以配置多個(gè)名稱(chēng),用,分割;id和name可以都為空,此時(shí)則可以通過(guò)獲取全限定類(lèi)名來(lái)獲取Bean。

class:全限定類(lèi)名

靜態(tài)工廠方法裝配

靜態(tài)工廠無(wú)需創(chuàng)建工廠類(lèi)示例就可以調(diào)用工廠類(lèi)方法。

factory-method:工廠方法

public class MyBeanFactory {
    public static MyBean createMyBean() {
        return new MyBean();
    }
}
非靜態(tài)工廠方法裝配

非靜態(tài)工廠方法必須首先定義一個(gè)工廠類(lèi)的Bean,然后通過(guò)factory-bean引用工廠類(lèi)實(shí)例。

factory-bean:指向定義好的工廠Bean

public class MyBeanFactory {
    public MyBean createMyBean() {
        return new MyBean();
    }
}

Bean的繼承和依賴(lài)

parent:通過(guò)設(shè)置標(biāo)簽的parent屬性,子將自動(dòng)繼承父的配置信息。

depends-on:通過(guò)設(shè)置標(biāo)簽的depends-on屬性,Spring允許顯示的設(shè)置當(dāng)前Bean前置依賴(lài)的Bean,確保前置依賴(lài)的Bean在當(dāng)前Bean實(shí)例化之前已經(jīng)創(chuàng)建好。

自動(dòng)裝配autowire

元素提供了一個(gè)default-autowire屬性可以全局自動(dòng)匹配,默認(rèn)為no。元素提供了一個(gè)指定自動(dòng)裝配類(lèi)型的autowire屬性,可以覆蓋元素的default-autowire屬性,該屬性有如下選項(xiàng):

自動(dòng)裝配類(lèi)型 說(shuō)明
no 顯式指定不使用自動(dòng)裝配。
byName 如果存在一個(gè)和當(dāng)前屬性名字一致的 Bean,則使用該 Bean 進(jìn)行注入。如果名稱(chēng)匹配但是類(lèi)型不匹配,則拋出異常。如果沒(méi)有匹配的類(lèi)型,則什么也不做。
byType 如果存在一個(gè)和當(dāng)前屬性類(lèi)型一致的 Bean ( 相同類(lèi)型或者子類(lèi)型 ),則使用該 Bean 進(jìn)行注入。byType 能夠識(shí)別工廠方法,即能夠識(shí)別 factory-method 的返回類(lèi)型。如果存在多個(gè)類(lèi)型一致的 Bean,則拋出異常。如果沒(méi)有匹配的類(lèi)型,則什么也不做。
constructor 與 byType 類(lèi)似,只不過(guò)它是針對(duì)構(gòu)造函數(shù)注入而言的。如果當(dāng)前沒(méi)有與構(gòu)造函數(shù)的參數(shù)類(lèi)型匹配的 Bean,則拋出異常。使用該種裝配模式時(shí),優(yōu)先匹配參數(shù)最多的構(gòu)造函數(shù)。
default 根據(jù) Bean 的自省機(jī)制決定采用 byType 還是 constructor 進(jìn)行自動(dòng)裝配。如果 Bean 提供了默認(rèn)的構(gòu)造函數(shù),則采用 byType;否則采用 constructor 進(jìn)行自動(dòng)裝配。
通過(guò)util命名空間配置集合類(lèi)型的Bean


2.3 使用XML依賴(lài)注入
屬性配置

Bean有一個(gè)無(wú)參數(shù)的構(gòu)造器

屬性有對(duì)應(yīng)的Setter函數(shù)

屬性命名滿足JavaBean的屬性命名規(guī)范


    
構(gòu)造方法

constructor-arg中的type和index可以沒(méi)有,只要能保證可以唯一的確定對(duì)應(yīng)的構(gòu)造方法即可

type中基本數(shù)據(jù)類(lèi)型和對(duì)應(yīng)的包裝類(lèi)不能通用

循環(huán)依賴(lài):如果兩個(gè)Bean都采用構(gòu)造方法注入,而且都通過(guò)構(gòu)造方法入?yún)⒁脤?duì)方,就會(huì)造成循環(huán)依賴(lài)導(dǎo)致死鎖。


    
    
2.4 注入?yún)?shù)
字面值

基本數(shù)據(jù)類(lèi)型及其封裝類(lèi)、String都可以采取字面值注入。

特殊字符可以使用節(jié)或者轉(zhuǎn)義序列

引用其他Bean

元素可以通過(guò)以下三個(gè)屬性引用容器中的其他Bean:

bean:通過(guò)該屬性可以引用同一容器或父容器的Bean,這是最常見(jiàn)的形式。

local:通過(guò)該屬性只能引用同一配置文件中定義的Bean,它可以利用XML解析器自動(dòng)檢驗(yàn)引用的合法性,以便在開(kāi)發(fā)編寫(xiě)配置時(shí)能夠及時(shí)發(fā)現(xiàn)并糾正配置的錯(cuò)誤。

parent:引用父容器中的Bean,如的配置說(shuō)明car的Bean是父容器中的Bean。

內(nèi)部Bean

內(nèi)部Bean只會(huì)被當(dāng)前Bean引用,不會(huì)被容器中其他的Bean引用

內(nèi)部Bean即使提供了id、name、scope也會(huì)被忽略,Scope默認(rèn)為prototype類(lèi)型。

    
        
    

    
        
            
            
                
            
        
    
null值

使用代表null值

級(jí)聯(lián)屬性

Spring支持級(jí)聯(lián)屬性如prop.value,而且支持多層級(jí)聯(lián)屬性

級(jí)聯(lián)屬性必須有初始值,否則會(huì)拋出NullValueInNestedPathException

public class MyBean {
    // 必須初始化
    private Prop prop = new Prop();

    public Prop getProp() {
        return prop;
    }

    public void setProp(Prop prop) {
        this.prop = prop;
    }
}
    
        
    
集合類(lèi)型屬性

List、Set、Map:通過(guò)等標(biāo)簽可以設(shè)置List、Set、Map的屬性

Properties:可以通過(guò)等標(biāo)簽設(shè)置Properties的屬性,Properties屬性的鍵值都只能是字符串。

集合合并:子Bean可以繼承父Bean的同名屬性集合元素,并且使用merge屬性選擇是否合并,默認(rèn)不合并。

    
        
            
                1314
            
        
    

    
        
            
                520
            
        
    
2.5 多配置文件整合

可以通過(guò)ApplicationContext加載多個(gè)配置文件,此時(shí)多個(gè)配置文件中的是可以互相訪問(wèn)的。

可以通過(guò)XML中的將多個(gè)配置文件引入到一個(gè)文件中,這樣只需要加載一個(gè)配置文件即可。

2.6 Bean的作用域
類(lèi)型 說(shuō)明
singleton 在Spring IoC容器中僅存在一個(gè)Bean實(shí)例,Bean以單實(shí)例的方式存在
prototype 每次從容器中調(diào)用Bean時(shí),都返回一個(gè)新的實(shí)例
request 每次HTTP請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的Bean,該作用域僅適用于WebApplicationContext環(huán)境
session 同一個(gè)HTTP session共享一個(gè)Bean,不同的HTTP session使用不同的Bean,該作用域僅適用于WebApplicationContext環(huán)境
globalSession 同一個(gè)全局Session共享一個(gè)Bean,一般用于Portlet環(huán)境,該作用域僅適用于WebApplicationContext環(huán)境
singleton作用域

無(wú)狀態(tài)或者狀態(tài)不可變的類(lèi)適合使用單例模式

如果用戶不希望在容器啟動(dòng)時(shí)提前實(shí)例化singleton的Bean,可以使用lazy-init屬性進(jìn)行控制

如果該Bean被其他需要提前實(shí)例化的Bean所引用,那么Spring將會(huì)忽略lazy-init的設(shè)置

prototype作用域

設(shè)置為scope="prototype"之后,每次調(diào)用getBean()都會(huì)返回一個(gè)新的實(shí)例

默認(rèn)情況下,容器在啟動(dòng)時(shí)不會(huì)實(shí)例化prototype的Bean

Spring容器將prototype的Bean交給調(diào)用者后就不再管理它的生命周期

Web應(yīng)用環(huán)境相關(guān)的Bean作用域

見(jiàn)后續(xù)章節(jié)

作用域依賴(lài)的問(wèn)題

見(jiàn)后續(xù)章節(jié)

3 FactoryBean

由于實(shí)例化Bean的過(guò)程比較負(fù)責(zé),可能需要大量的配置,這是采用編碼的方式可能是更好的選擇。Spring提供了FactoryBean工廠類(lèi)接口,用戶可以實(shí)現(xiàn)該接口定制實(shí)例化Bean的邏輯。當(dāng)配置文件中的class屬性配置的是FactoryBean的子類(lèi)時(shí),通過(guò)getBean()返回的不是FactoryBean本身,而是getObject()方法所返回的對(duì)象,相當(dāng)于是FactoryBean#getObject()代理了getBean()方法。

T getObject() throws Exception;:返回由FactoryBean創(chuàng)建的Bean實(shí)例,如果isSingleton()返回的是true,該實(shí)例會(huì)放到Spring容器的實(shí)例緩存池中。

Class getObjectType();:返回該FactoryBean創(chuàng)建的Bean的類(lèi)型

boolean isSingleton();:創(chuàng)建的Bean是singleton的還是prototype

/**
 * 實(shí)現(xiàn),分割的方式配置 KFCCombo 屬性
 */
public class KFCFactoryBean implements FactoryBean {
    private String prop;

    public String getProp() {
        return prop;
    }

    // 接受,分割的屬性設(shè)置信息
    public void setProp(String prop) {
        this.prop = prop;
    }

    // 實(shí)例化KFCCombo
    public KFCCombo getObject() throws Exception {
        KFCCombo combo = new KFCCombo();
        String[] props = prop.split(",");
        combo.setBurger(props[0]);
        combo.setDrink(props[1]);
        return combo;
    }

    public Class getObjectType() {
        return KFCCombo.class;
    }

    // true則放進(jìn)容器緩存池,false則每次都調(diào)用getObject()方法返回新的對(duì)象
    public boolean isSingleton() {
        return false;
    }
}
    
        
    
4 基于注解的配置 4.1 支持的注解

@Component:在Bean的實(shí)現(xiàn)類(lèi)上直接標(biāo)注,可以被Spring容器識(shí)別
@Repository:用于對(duì)DAO實(shí)現(xiàn)類(lèi)進(jìn)行標(biāo)柱
@Service:用于對(duì)Service實(shí)現(xiàn)類(lèi)進(jìn)行標(biāo)注
@Controller:用于對(duì)Controller實(shí)現(xiàn)類(lèi)進(jìn)行標(biāo)注

4.2 掃描注解定義對(duì)Bean

Spring提供了一個(gè)context命名空間,用于掃描以注解定義Bean的類(lèi)。




    
base-package屬性

指定一個(gè)需要掃描的基類(lèi)包,Spring容器會(huì)掃描這個(gè)包下的所有類(lèi),并提取標(biāo)注了相關(guān)注解的Bean。

resource-pattern屬性

如果不希望掃描base-package下的所有類(lèi),可以使用該屬性提供過(guò)濾

該屬性默認(rèn)是**/*.class,即基包下的所有類(lèi)

:表示要排除的目標(biāo)類(lèi)

:表示要包含的目標(biāo)類(lèi)

可以有多個(gè)上述兩個(gè)子元素;首先根據(jù)exclude-filter列出需要排除的黑名單,然后再根據(jù)include-filter流出需要包含的白名單。

類(lèi)別 示例 說(shuō)明
annotation com.ankeetc.XxxAnnotation 所有標(biāo)注了XxxAnnotation的類(lèi)。該類(lèi)型采用目標(biāo)類(lèi)是否標(biāo)志了某個(gè)注解進(jìn)行過(guò)濾。
assignable com.ankeetc.XxService 所有繼承或擴(kuò)展XXXService的類(lèi)。該類(lèi)型采用目標(biāo)類(lèi)是否繼承或者擴(kuò)展了某個(gè)特定類(lèi)進(jìn)行過(guò)濾
aspectj com.ankeetc..*Service+ 所有類(lèi)名以Service結(jié)束的類(lèi)及繼承或者擴(kuò)展他們的類(lèi)。該類(lèi)型采用AspectJ表達(dá)式進(jìn)行過(guò)濾
regex com.ankeetc.auto..* 所有com.ankeetc.auto類(lèi)包下的類(lèi)。該類(lèi)型采用正則表達(dá)式根據(jù)目標(biāo)類(lèi)的類(lèi)名進(jìn)行過(guò)濾
custom com.ankeetc.XxxTypeFilter 采用XxxTypeFilter代碼方式實(shí)現(xiàn)過(guò)濾規(guī)則,該類(lèi)必須實(shí)現(xiàn)org.springframework.core.type.TypeFilter接口
use-default-filters屬性

use-default-filters屬性默認(rèn)值為true,表示會(huì)對(duì)標(biāo)注@Component、@Controller、@Service、@Reposity的Bean進(jìn)行掃描。

如果想僅掃描一部分的注解,需要將該屬性設(shè)置為false。



    
4.3 自動(dòng)裝配
@Component
public class KFCCombo {
    @Autowired
    private PepsiCola cola;

    @Autowired
    private Map colaMap;

    @Autowired
    private List burgerList;

    private ZingerBurger burger;
    @Autowired
    public void setBurger(@Qualifier(value = "zingerBurger") ZingerBurger burger) {
        this.burger = burger;
    }

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:/beans.xml"});

        KFCCombo combo = context.getBean(KFCCombo.class);
    }
}

interface Cola {}

@Order(value = 1)
@Component
class CocaCola implements Cola {}

@Order(value = 2)
@Component
class PepsiCola implements Cola {}

@Component(value = "zingerBurger")
class ZingerBurger {
}
@Autowired注解

使用該注解可以按類(lèi)型自動(dòng)裝配對(duì)應(yīng)的Bean

沒(méi)有找到對(duì)應(yīng)的Bean則會(huì)拋出NoSuchBeanDefinitionException異常

使用required=false屬性可以設(shè)置即使找不到對(duì)應(yīng)的Bean(即為null)也不會(huì)拋出異常

@Autowired可以對(duì)類(lèi)成員變量及方法入?yún)⑦M(jìn)行標(biāo)注

@Quaifiler

如果容器中有一個(gè)以上匹配的Bean時(shí),可以按照Bean名字查找對(duì)應(yīng)的Bean

@Quaifiler需要與@Autowired配合使用

對(duì)集合類(lèi)進(jìn)行標(biāo)注

可以使用@Autowired對(duì)集合類(lèi)進(jìn)行標(biāo)注,Spring會(huì)講容器中按類(lèi)型匹配對(duì)所有Bean注入進(jìn)來(lái)

可以使用@Order指定加載順序,值越小的越先加載

@Lazy延遲加載

可以使用@Lazy實(shí)現(xiàn)延遲加載,不會(huì)立即注入屬性值,而是延遲到調(diào)用此屬性對(duì)時(shí)候才會(huì)注入屬性值。

@Resource和@Inject

Spring支持JSR-250中@Resource注解和JSR-330的@Inject注解

@Resource采用的是按照名稱(chēng)加載的方式,它要求提供一個(gè)Bean名稱(chēng)的屬性,如果屬性為空,則自動(dòng)采用標(biāo)注處的變量名或方法名作為Bean的名稱(chēng)。

@Inject是按照類(lèi)型匹配注入Bean的。

由于這兩個(gè)注解功能沒(méi)有@Autowired功能強(qiáng)大,一般不需要使用。

4.4 Bean作用范圍及生命周期

注解配置的Bean默認(rèn)作用范圍為singleton,可以使用@Scope顯示指定作用范圍

可以使用@PostConstruct和@PreDestroy注解來(lái)達(dá)到init-method和destroy-method屬性的功能。

@PostConstruct和@PreDestroy注解可以有多個(gè)

5 基于Java類(lèi)的配置 5.1 @Configuration注解

JavaConfig是Spring的一個(gè)子項(xiàng)目,旨在通過(guò)Java類(lèi)的方式提供Bean的定義信息。

普通的POJO標(biāo)注了@Configuration注解,就可以被Spring容器提供Bean定義信息。

@Configuration注解本身已經(jīng)標(biāo)注了@Component注解,所以任何標(biāo)注了@Configuration的類(lèi)都可以作為普通的Bean。

5.2 @Bean注解

@Bean標(biāo)注在方法上,用于產(chǎn)生一個(gè)Bean

Bean的類(lèi)型由方法的返回值的類(lèi)型確定,Bean名稱(chēng)默認(rèn)與方法名相同,也可以顯示指定Bean的名稱(chēng)。

可以使用@Scope來(lái)控制Bean的作用范圍。

5.3 啟動(dòng)Spring容器
通過(guò)@Configuration類(lèi)啟動(dòng)Spring容器

可以直接設(shè)置容器啟動(dòng)要注冊(cè)的類(lèi)

可以向容器中注冊(cè)新的類(lèi),注冊(cè)了新的類(lèi)要記得refresh

可以通過(guò)@Import將多個(gè)配置類(lèi)組裝稱(chēng)一個(gè)配置類(lèi)

public class Main {
    public static void main(String[] args) {
        // (1)可以直接設(shè)置容器啟動(dòng)要加載的類(lèi)
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(DaoConfig.class);
        // (2)可以向容器中注冊(cè)新的類(lèi)
        ((AnnotationConfigApplicationContext) applicationContext).register(ServiceConfig.class);
        // (3)注冊(cè)了新的類(lèi)要記得refresh
        ((AnnotationConfigApplicationContext) applicationContext).refresh();
    }
}

@Configuration
class DaoConfig {
    @Bean
    public String getStr() {
        return "1314";
    }
}

@Configuration
@Import(DaoConfig.class)
// (4)可以通過(guò)@Import將多個(gè)配置類(lèi)組裝稱(chēng)一個(gè)配置類(lèi)
class ServiceConfig {
}
通過(guò)XML配置文件引用@Configuration的配置

標(biāo)注了@Configureation的配置類(lèi)本身也是一個(gè)bean,它可以被Spring的掃描到。如果希望將此配置類(lèi)組裝到XML配置文件中,通過(guò)XML配置文件啟動(dòng)Spring容器,僅在XML文件中通過(guò)掃描到相應(yīng)的配置類(lèi)即可。

通過(guò)@Configuration配置類(lèi)引用XML配置信息

在標(biāo)注了@Configuration的配置類(lèi)中,可以通過(guò)@ImportResource引入XML配置文件。

@Configuration
@ImportResource("classpath:beans.xml")
public class Config {
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72883.html

相關(guān)文章

  • spring mvc 常用注解標(biāo)簽詳解【轉(zhuǎn)載】

    摘要:分發(fā)處理器將會(huì)掃描使用了該注解的類(lèi)的方法,并檢測(cè)該方法是否使用了注解。的作用相當(dāng)于,只不過(guò)按照自動(dòng)注入。作用該注解用于將的方法返回的對(duì)象,通過(guò)適當(dāng)?shù)霓D(zhuǎn)換為指定格式后,寫(xiě)入到對(duì)象的數(shù)據(jù)區(qū)。用于注解層,在類(lèi)上面注解。 原文地址 Controller 在SpringMVC中,控制器Controller負(fù)責(zé)處理由DispatcherServlet分發(fā)的請(qǐng)求,它把用戶請(qǐng)求的數(shù)據(jù)經(jīng)過(guò)業(yè)務(wù)處理層處理...

    Kylin_Mountain 評(píng)論0 收藏0
  • Spring核心組件剖析

    摘要:本文主要探討的三大核心組件。的核心組件有很多,但真正構(gòu)成其骨骼的,是,和。因此,的核心思想常常被稱(chēng)作,面向編程。的重要組成部分之一是。總結(jié)本文主要總結(jié)了構(gòu)成骨骼框架的三大核心組件及其之間的聯(lián)系,以及對(duì)三者實(shí)現(xiàn)原理理解的一些心得體會(huì)。 簡(jiǎn)介 Spring框架如今已成為服務(wù)端開(kāi)發(fā)框架中的主流框架之一,是web開(kāi)發(fā)者的利器。然而,真正讓人著迷的,還是與其實(shí)現(xiàn)相關(guān)的 原理,設(shè)計(jì)模式以及許多工...

    springDevBird 評(píng)論0 收藏0
  • Java深入-框架技巧

    摘要:從使用到原理學(xué)習(xí)線程池關(guān)于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實(shí)現(xiàn)在軟件開(kāi)發(fā)中,分散于應(yīng)用中多出的功能被稱(chēng)為橫切關(guān)注點(diǎn)如事務(wù)安全緩存等。 Java 程序媛手把手教你設(shè)計(jì)模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經(jīng)風(fēng)雨慢慢變老,回首走過(guò)的點(diǎn)點(diǎn)滴滴,依然清楚的記得當(dāng)初愛(ài)情萌芽的模樣…… Java 進(jìn)階面試問(wèn)題列表 -...

    chengtao1633 評(píng)論0 收藏0
  • 第一章--Spring之旅

    摘要:兩種方式來(lái)表示的應(yīng)用上下文。日志,事務(wù)管理和安全這樣的系統(tǒng)服務(wù)經(jīng)常融入到具有核心業(yè)務(wù)邏輯的組件中去,這些系統(tǒng)服務(wù)通過(guò)被稱(chēng)為橫切關(guān)注點(diǎn)。容器使用管理構(gòu)成應(yīng)用的組件,他會(huì)創(chuàng)建相互協(xié)作的組件之間的關(guān)聯(lián)。的生命周期四俯瞰的風(fēng)景線模塊,,,, 完整代碼請(qǐng)見(jiàn):https://github.com/codercuixi...為了降低Java開(kāi)發(fā)的復(fù)雜性,Spring采用了以下4種策略: 基于poj...

    pkwenda 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<