Springゼロログの構成と解決
7244 ワード
Spring 2.Xの場合、プロファイルはXMLの構成方式を採用していたが、3.Xの後に注釈配置の方式を導入し、これにより私たちのプロファイルの書き方が大幅に減少し、従来のXMLの多くはテンプレート的なものであった.しかし、Springで提唱されている0構成を実際に理解し、使用できるようになったのは、この構成の使用例である.
1.依存の追加
MAVENのプロジェクトを作成し、Springの依存を加えます.結局、私たちはそれを使いますか.私たちが使っているバージョンは4.2.9.RELEASEです.
2.論理コード
プロジェクト開発では、以前はデータベースやポートなどに接続していた場合、属性プロファイルで内容を記録し、コードから読み出して設定していました.この過程では、読み出された内容をタイプ変換など一連の操作を行う必要があります.これはプロジェクトごとに欠かせないように動作します.Springでは既成の属性ファイルの読み取り変換の操作があります.私たちが使用するときは、その方法で簡単に属性ファイルの読み取りを実現することができます.Springのプロパティファイル読み込みを例に挙げます.
2.1属性ファイル
属性ファイルはMAVENプロジェクトのresourcesフォルダの下に置かれています.実はクラスパスに対応しています.ロードするときはclasspath:を使って読み取ることができます.属性ファイルには2人のタイプの内容があります.1つはStringタイプのnameで、もう1つはIntクラス型のageです.以下のように:
Springでは属性ファイルの操作はオブジェクト向けに行われ,属性ファイルはSpringでも1つのクラスファイル(特殊なクラスファイル)が対応付けられている.注記@Configurationと@PropertySourceでタグ付けされ、@Beanタグのオブジェクトが返されます.
2.3属性内容使用
プロパティファイルは構成されています.次に、どのように使用するかです.次にサービスクラスがあります.その中には、私のプロパティファイルに対応する値を導入して処理する必要があります.まず、注記@Importを使用して属性ポイントクラスファイルを導入し、@Value注記を使用して属性名に基づいて対応する属性値を注入する必要があります.
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 で しなければならないので、 のバージョンでこの があるかどうか かりません.