Springプロファイルを構成し、開発環境とテスト生産環境を切り替える

11072 ワード

プロジェクトの開発環境やテスト生産環境で構成するデータベース、redisなど、接続先が異なります.これにより、プロジェクトがテストに配備され、生産時にこれらの構成が個別に変更されます.Springのprofileでは、異なる環境でSpringコンテナに異なる構成Beanを登録し、総スイッチでどの環境でどのような構成を使用するかを制御できます.
public interface CompactDisc {
    void play();
}

2つのクラスが実現しました
public class MusicDisc implements CompactDisc {
    private String music = "   ";
    /**  
     * @see com.xu.CompactDisc#play() 
     */
    @Override
    public void play() {
        System.out.println(music);
    }
}

public class MovieDisc implements CompactDisc {
    private String MovieConfig = "     ";
    /**  
     * @see com.xu.CompactDisc#play() 
     */
    @Override
    public void play() {
        musicDisc.play();
    }
}

Javaベースの構成
@Configuration
public class MusicConfig {
    @Bean
    @Profile("dev")
    public CompactDisc musicDisc(){
        return new MusicDisc();
    }
}
@Configuration
public class MovieConfig {
    @Bean
    @Profile("pro")
    public CompactDisc movieDisc(){
        return new MovieDisc();
    }
}
@Controller
public class DiscController {
    @Autowired(required=false)
    private CompactDisc disc;

    @RequestMapping("/disc")
    public String disc(){
        System.out.println("------  controller--------");
        musicDisc.play();
        return "ewr";
    }
}

web.xml構成
<context-param>
        <param-name>spring.profiles.default</param-name>
        <param-value>dev</param-value>
    </context-param>
    <context-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>pro</param-value>
    </context-param>

    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:/applicationContext.xml</param-value>
        </init-param>
        <init-param>
            <param-name>spring.profiles.default</param-name>
            <param-value>dev</param-value>
        </init-param>
        <load-on-startup> 1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

ControllerクラスにはCompactDiscの注入があります.上のMovieDiscとMusicDiscがCompactDiscを実現しているため、Springコンテナ起動時に登録を選択します.この選択は@Profile("pro")注釈で識別されます.Webxmlにspringを追加します.profiles.default制御、具体的な制御規則は以下の通りである:xmlにはspringが配置されている.profiles.义齿profiles.Activeは、activeがない場合にデフォルトdefalultで構成されているdevで、対応する構成クラスに@Profile("dev")で識別されているMusicDiscが作成されます.Activeが構成されている場合、@Profile(「dev」)が作成されます.@Profileで識別されていないbeanは常に作成されます.上記の構成によれば、http://localhost:8080/Spring/disc時出力は
------  controller--------
     

これにより、異なる環境を配置する際にspringを制御する.profiles.Activeとokは、それらの構成を一つ一つ変更する必要はありません.
xml構成方式
    <beans profile="pro">
        <bean id="compactDisc" class="com.xu.MusicDisc">bean>
    beans>