0

我有一种方法,它包含一些业务逻辑,例如使用一些特定于域的服务器创建协议等。我需要在我的应用程序启动时运行一次该方法。

我怎样才能达到我的以下要求?

这是我已经做过的。我为业务类和 applicationContext.xml 中的控制器创建了 bean,并将业务类 bean 注入到控制器中。

我的applicationContext.xml意志是,

<bean id="configInfo" class="com.pointel.Agent_Chat.ServerInfo.ConfigServerInfo">
    <property name="configurationServer_name" value="${CS_NAME}"></property>
    <property name="configurationServer_host" value="${CS_IPADDRESS}"></property>
</bean>

<bean id="config_con" class="com.pointel.Agent_Chat.ServerConnection.ConfigServerConnection" >
    <property name="info" ref="configInfo"></property>
</bean>

<bean id="init_Server" class="com.pointel.Agent_Chat.Initialiser.Initialize_Servers">
    <property name="connection" ref="config_con"></property>
</bean>

<bean id="initCon" class="com.pointel.Agent_Chat.controllers.InitServerController">
    <property name="init_Server" ref="init_Server"></property>
</bean>

我的Controller意志是,

@Controller
public class InitServerController {

    public static int count = 0;
    private Initialize_Servers init_Server;

    public InitServerController(){
        count++;
        System.out.println("Init Controller "+count+" time");
    }

    public void setInit_Server(Initialize_Servers init_Server) {
        this.init_Server = init_Server;
        initializeServers();
    }



    private void initializeServers() {
        ServerStatus.config_status = init_Server.initialize_Config_Server();
        System.out.println("config_status : "+ServerStatus.config_status);
    }

}

我的Business class意志是

public class Initialize_Servers {

    private ConfigServerConnection connection;
    private InteractionServerConnection interConnection;
    private UCSConnection ucsConnection;

    public Initialize_Servers(){
        System.out.println("Initialize_Servers class instance was created !");
    }

    public ConfigServerConnection getConnection() {
        return connection;
    }

    public void setConnection(ConfigServerConnection connection) {
        this.connection = connection;
    }

    public boolean initialize_Config_Server(){
        try{
            ConfServerProtocol protocol = connection.getConnection();
            if(protocol != null){
                System.out.println("Config server Protocol is not null");
                return true;

            }
        }catch(Exception e){

            return false;
        }
    }

}

这是正确的方法吗?或任何其他完美的方式来做到这一点?

好的答案绝对值得赞赏。

4

1 回答 1

1

您可以使用 bean XML 元素上的 init-method 属性将 xml 文件中的 bean 设置为具有 init 方法,如下所示:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="myBean" class="com.myjunk.MyBean" 
        init-method="myInit" >
    </bean>
</beans>

这将在 bean 初始化后调用 MyBean 上的 myInit() 方法。这发生在属性连接在一起之后。如果您使用注释来连接东西,那么您也可以使用注释,但我不知道它们是否在我的脑海中。该方法必须不带任何参数。

另一种选择是实现ApplicationContextAware,它提供了在连接过程中获取应用程序上下文的钩子。同样,这发生在对象上设置属性之后。

于 2013-06-07T16:14:09.073 回答