Springゼロログの構成と解決

7244 ワード

Spring 2.Xの場合、プロファイルはXMLの構成方式を採用していたが、3.Xの後に注釈配置の方式を導入し、これにより私たちのプロファイルの書き方が大幅に減少し、従来のXMLの多くはテンプレート的なものであった.しかし、Springで提唱されている0構成を実際に理解し、使用できるようになったのは、この構成の使用例である.
1.依存の追加
 MAVENのプロジェクトを作成し、Springの依存を加えます.結局、私たちはそれを使いますか.私たちが使っているバージョンは4.2.9.RELEASEです.


4.2.9.RELEASE




org.springframework
spring-context
${spring.version}



2.論理コード
 プロジェクト開発では、以前はデータベースやポートなどに接続していた場合、属性プロファイルで内容を記録し、コードから読み出して設定していました.この過程では、読み出された内容をタイプ変換など一連の操作を行う必要があります.これはプロジェクトごとに欠かせないように動作します.Springでは既成の属性ファイルの読み取り変換の操作があります.私たちが使用するときは、その方法で簡単に属性ファイルの読み取りを実現することができます.Springのプロパティファイル読み込みを例に挙げます.
2.1属性ファイル
 属性ファイルはMAVENプロジェクトのresourcesフォルダの下に置かれています.実はクラスパスに対応しています.ロードするときはclasspath:を使って読み取ることができます.属性ファイルには2人のタイプの内容があります.1つはStringタイプのnameで、もう1つはIntクラス型のageです.以下のように:

# App.properties
app.name=MyName
app.age=23
2.2属性占有配置クラス
 Springでは属性ファイルの操作はオブジェクト向けに行われ,属性ファイルはSpringでも1つのクラスファイル(特殊なクラスファイル)が対応付けられている.注記@Configurationと@PropertySourceでタグ付けされ、@Beanタグのオブジェクトが返されます.

@Configuration // , Spring
@PropertySource("classpath:App.properties") //
public class PropertyPlaceholderConfig {
// PropertySourcesPlaceholderConfigurer Spring
//
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}

2.3属性内容使用
 プロパティファイルは構成されています.次に、どのように使用するかです.次にサービスクラスがあります.その中には、私のプロパティファイルに対応する値を導入して処理する必要があります.まず、注記@Importを使用して属性ポイントクラスファイルを導入し、@Value注記を使用して属性名に基づいて対応する属性値を注入する必要があります.

@Component // Spring , Bean
@Import(PropertyPlaceholderConfig.class) //
public class AppService {
// log4j ,
private static final Logger log = LoggerFactory.getLogger(AppService.class);
//         
@Value("${app.name}")
private String name;

//          
@Value("${app.age}")
private int age;

public void showProperties(){
    //     
    log.debug(getClass().getSimpleName());
    //     
    System.out.println("Name:"+name);
    System.out.println("Age:"+age);
}

}
3.プロジェクトの
  の が しました. にSpringを し、プロジェクトの をテストします.Spring も なことではありませんが、まずそのプロファイルを します. はもちろんXMLファイルを していましたが、 は0プロファイルなので、 はもちろん います.
3.1プロファイル
 0コンフィギュレーションはコンフィギュレーションファイルがないというわけではありませんが、 のxmlコンフィギュレーションファイルがないだけですが、Springのコンフィギュレーションファイルとしてクラスをカスタマイズします.このクラスは でマークされています.

@Configuration //
@ComponentScan(basePackages = {"com.outlook.sftjun"})
// Spring , Bean ,
//
public class AppConfig {
// TODO ...
// ,
}

3.2
そろっていて、 が りないだけです. のコードで し、 が しいかどうかを しましょう.

@ComponentScan(basePackageClasses = {AppConfig.class})
// AppConfig.class
// ,
// @ComponentScan,
// , “ ”
public class App {
private static final Logger log = LoggerFactory.getLogger(App.class);
public static void main(String[] args) {
    log.debug("Start spring ....");
    //     
    //           ,           AppConfig.class
    //      AppConfig.class
    ApplicationContext context = new AnnotationConfigApplicationContext(
            App.class);
    //             
    context.getBean(AppService.class).showProperties();
}

}
4. を
  の に がなければ、コンソールから のコードが えます.

Name:MyName
Age:23
5.テスト
 もちろん の でテストするのは の ではありませんが、プロジェクトが きいと にも がかかり、 が いように えます.SpringはTestフレームワークを しています. は のとおりです.

  • 4.12


    org.springframework
    spring-test
    ${spring.version}



    junit
    junit
    ${junit.version}


  • プロファイル

    // ,JUnit invoke
    @RunWith(SpringJUnit4ClassRunner.class)
    // Spring
    @ContextConfiguration(classes = {AppConfig.class})
    public class AppTest {
    //
    @Autowired AppService appService;

    @Test
    public void tst(){
    appService.showProperties();
    }
    }

  • プルトニウム ユニット を すると、 で を したときと じ が されます.

    Name:MyName
    Age:23

  • 6. ログ
      の たちのクラスではロガーというクラスを ってログ をしていますが、これはどこから たのでしょうか.それは のようなものです.Springではログフレームslf 4 jを していますが、ログを していない は、 するたびに が されます( い らないで、 してみましょう)、しかし、このフレーム はログ を えておらず、 のログ を えた と して する があります.log 4 jは い です.
    6.1
    もちろん、 のものを って、もちろん に に れなければなりません.そうしないと、どう いますか. はログ のバッグを します.

    1.7.22
    1.2.17


    org.slf4j
    slf4j-log4j12
    ${slf4j.version}



    org.slf4j
    slf4j-api
    ${slf4j.version}



    log4j
    log4j
    ${log4j.version}


    6.2プロファイルの
    を に れたから、もちろん に をするか えてあげなければなりません.そうしないと、 の に ちますか.log 4 jのプロファイルは、log 4 j.propertiesと されています. クラスパスの には、

    #config root logger
    log4j.rootLogger = DEBUG,stdout
    # Logger Logger appender
    log4j.additivity.org.apache=true
    # standout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d (%p) [%c] - %m%n
     の なプロファイルには くの があります.ここではコンソール を して、ログレベルをDebugレベルに します. なマルチメソッド の ファイルが な は、コメントエリアで を してください.
    6.3
      は に で、 のレベルを するだけでいいです. な は の りです.

    //
    private static final Logger log = LoggerFactory.getLogger(AppService.class);
    //
    log.debug(“ ”);// debug
     これらの が すると、Springを しても は されません.また、プロジェクトを した 、ログ を します.プログラムが するログをファイル、データベースなどにレベル に できます.
    7.まとめ
  • バージョン  Spring 0を して する 、 するSpringのバージョンに してください.バージョンが すぎると、もちろんこの はサポートされませんが、 すぎることはできません. しいバージョンには くの があります. はDemoを くとき、 バージョンを しましたが、 が できない に し、 い やってやっとこの であることに づきました.
  • テスト だからテスト の はpublic で しなければならないので、 のバージョンでこの があるかどうか かりません.