Skip to content

Commit

Permalink
LoggerAOPadded
Browse files Browse the repository at this point in the history
  • Loading branch information
jdegand committed May 28, 2023
1 parent d59b15f commit de04e5e
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,13 @@
- [Stack Overflow](https://stackoverflow.com/questions/8247970/using-like-wildcard-in-prepared-statement) - using like wildcard in prepared statement
- [Mkyong](https://mkyong.com/spring/spring-jdbctemplate-querying-examples/) - jdbctemplate querying examples
- [Spring Docs](https://docs.spring.io/spring-framework/reference/integration/scheduling.html) - scheduling
- [Stack Overflow](https://stackoverflow.com/questions/29832122/create-a-new-instance-of-component-in-spring-boot-framework) - create new instance of component in spring boot
- [Stack Overflow](https://stackoverflow.com/questions/29832122/create-a-new-instance-of-component-in-spring-boot-framework) - create new instance of component in spring boot
- [Medium](https://medium.com/@KosteRico/spring-aop-in-2021-level-up-your-logging-8d1498242ba2) - level up your logging
- [Baeldung](https://www.baeldung.com/spring-boot-logging) - spring boot logging
- [Baeldung](https://www.baeldung.com/spring-aop) - spring aop
- [Spring Docs](https://docs.spring.io/spring-framework/docs/2.0.x/reference/aop.html) - aop
- [Eclipse](https://www.eclipse.org/aspectj/doc/released/runtime-api/org/aspectj/lang/JoinPoint.html#getArgs%28%29) - JoinPoint
- [Nickolas Fisher](https://nickolasfisher.com/blog/How-to-Use-Springs-Aspect-Oriented-Programming-to-log-all-Public-Methods) - AOP to log all public methods
- [Spring Docs](https://docs.spring.io/spring-framework/reference/core/aop/ataspectj/advice.html#aop-ataspectj-around-advice) - declaring advice
- [Stack Overflow](https://stackoverflow.com/questions/44635757/spring-4-join-point-to-get-method-argument-names-and-values) - spring 4 join point to get method argument names and values
- [Stack Overflow](https://stackoverflow.com/questions/64571161/use-aop-in-a-spring-boot-app-to-log-methods-calls-and-their-parameters) - use aop in spring boot to log method calls and their parameters
48 changes: 48 additions & 0 deletions Spring/LoggerAOP.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import org.aspectj.lang.*;
import org.aspectj.lang.annotation.*;
import org.springframework.context.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.*;
import java.lang.annotation.*;
import java.util.*;

@Aspect
@Component
public class LoggerAOP {
@Autowired private Logger logger;

@Around("execution(public * *(..)) && @annotation(LogExecution)")
public void loggingAdvice(JoinPoint jp) {
String method = jp.getSignature().getName();
logger.log(method);
}
}

@Component
class NameRepository {
@LogExecution
public List<String> getNames() {
List<String> names = new ArrayList<>();
names.add("John");
names.add("Mary");
return names;
}
}

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface LogExecution {}

interface Logger {
public void log(String data);
}

@Configuration
@EnableAspectJAutoProxy
@Import({LoggerAOP.class, NameRepository.class})
class Config {
@Bean
public Logger logger() {
return (message) -> System.out.println(message);
}
}

0 comments on commit de04e5e

Please sign in to comment.