1.前言
在創建對象的過程中,常常創建出的對象並不能直接使用,它可能需要若干步複雜的步驟,處理完成後才能正常使用。比如有一個網絡連接的類NetConn,類中有加載配置文件的方法load(),測試網絡連通性的方法ping(),連接網絡的方法conn(),登陸方法login(),登陸成功發送數據的方法sendData()。當我們創建了NetConn類的對象時,並不能直接使用該對象去發送數據。因爲前面還有一系列的步驟需要執行,只有執行完畢,登陸成功後才能發送數據。
之前用過三種工廠模式實現了該過程,原文鏈接:https://blog.csdn.net/qq_32224047/article/details/106960417。此處使用註解實現。
2.實現過程
2.1導入需要的jar包
此處採用手動導入,未使用maven,需要使用註解,要導入下面圈出的包
2.2創建網絡連接的類NetConn及工廠類NetConnFactory
NetConn:
public class NetConn {
public void load(){
System.out.println("加載配置文件..");
}
public void ping(){
System.out.println("測試網絡連通性..");
}
public void conn(){
System.out.println("連接網絡..");
}
public void login(){
System.out.println("登陸..");
}
public void sendData(){
System.out.println("發送數據..");
}
}
NetConnFactory :@Component註解--將類註明爲一個spring管理的bean , @Bean("netConn")註解將方法getInstance()命名爲netConn並交給spring容器管理
Spring的@Bean註解用於告訴方法,產生一個Bean對象,然後這個Bean對象交給Spring管理。 產生這個Bean對象的方法Spring只會調用一次,隨後這個Spring將會將這個Bean對象放在自己的IOC容器中。
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
/**
* 實例工廠
*/
@Component
public class NetConnFactory {
@Bean("netConn")
public NetConn getInstance(){
NetConn conn = new NetConn();
conn.load();
conn.ping();
conn.conn();
conn.login();
return conn;
}
}
在web.xml中開啓包掃描即可
<!--開啓包掃描-->
<context:component-scan base-package="cn.tedu.domains"/>
調用測試: