Skip to content

Commit 2e60dd2

Browse files
committed
Part 25: Add LoggingAutoConfiguration.java in myfirst-logging-spring-boot-starter module
1 parent 983419b commit 2e60dd2

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package spring.oldboy.logging.config;
2+
3+
import jakarta.annotation.PostConstruct;
4+
import spring.oldboy.logging.aop.SecondAspectAndFirstAdvice;
5+
import spring.oldboy.logging.aop.FirstAspect;
6+
import spring.oldboy.logging.aop.ThirdAspectAndAroundAdvice;
7+
import lombok.extern.slf4j.Slf4j;
8+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
9+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
10+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
11+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
12+
import org.springframework.context.annotation.Bean;
13+
import org.springframework.context.annotation.Configuration;
14+
import org.springframework.core.annotation.Order;
15+
16+
@Slf4j
17+
/*
18+
Аннотация указывает, что класс объявляет один или несколько методов @Bean и может
19+
обрабатываться контейнером Spring для создания определений компонентов и запросов
20+
на обслуживание для этих компонентов во время выполнения.
21+
*/
22+
@Configuration
23+
/*
24+
Включает поддержку аннотированных bean-компонентов @ConfigurationProperties. Bean-s
25+
@ConfigurationProperties можно зарегистрировать стандартным способом (например, с
26+
помощью методов @Bean) или, для удобства, указать непосредственно в этой аннотации.
27+
*/
28+
@EnableConfigurationProperties(LoggingProperties.class)
29+
/*
30+
@ConditionOn... условие, которое соответствует только тогда, когда указанные классы
31+
находятся в пути к классам. Значение класса можно безопасно указать в классах
32+
@Configuration, поскольку метаданные аннотации анализируются с помощью ASM перед
33+
загрузкой класса. Если ссылку на класс нельзя использовать, можно использовать атрибут
34+
строки имени.
35+
*/
36+
@ConditionalOnClass(LoggingProperties.class)
37+
/*
38+
@Conditional, который проверяет, имеют ли указанные свойства определенное значение.
39+
По умолчанию свойства должны присутствовать в среде и не быть равными false. Атрибуты
40+
hasValue() и matchIfMissing() допускают дальнейшую настройку. Атрибут hasValue() можно
41+
использовать для указания значения, которое должно иметь свойство.
42+
*/
43+
@ConditionalOnProperty(prefix = "app.myfirst.logging",
44+
name = "enabled",
45+
havingValue = "true")
46+
public class LoggingAutoConfiguration {
47+
48+
/* Инициализируем нашу авто-конфигурацию */
49+
@PostConstruct
50+
void init() {
51+
log.info("LoggingAutoConfiguration initialized");
52+
}
53+
54+
@Bean
55+
@ConditionalOnMissingBean
56+
public FirstAspect firstAspect() {
57+
return new FirstAspect();
58+
}
59+
60+
@Bean
61+
@Order(1)
62+
@ConditionalOnMissingBean
63+
public SecondAspectAndFirstAdvice secondAspect() {
64+
return new SecondAspectAndFirstAdvice();
65+
}
66+
67+
@Bean
68+
@Order(2)
69+
@ConditionalOnMissingBean
70+
public ThirdAspectAndAroundAdvice thirdAspect() {
71+
return new ThirdAspectAndAroundAdvice();
72+
}
73+
74+
}

0 commit comments

Comments
 (0)