导入
面向切面编程
了解面向切面编程(Aspect Oriented Programming)的概念,并通过一个示例更好地理解这一概念。
...
...
OOP与AOP的区别
1 2<dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-aop</artifactId> 5</dependency>
Movie 类
1@Repository 2public class Movie { 3 public String getMovieDetails() { 4 // 与 Movie 数据库交互 5 return "电影详情"; 6 } 7}
User 类
1@Repository 2public class User { 3 public String getUserDetails() { 4 // 与 User 数据库交互 5 return "用户详情"; 6 } 7}
FilteringTechnique1 类
1@Service 2public class FilteringTechnique1 { 3 @Autowired 4 private Movie movie; 5 6 public String contentBasedFiltering() { 7 String movieDetails = movie.getMovieDetails(); 8 return movieDetails; 9 } 10}
FilteringTechnique2 类
1@Service 2public class FilteringTechnique2 { 3 @Autowired 4 private User user; 5 6 public String collaborativeFiltering() { 7 String userDetails = user.getUserDetails(); 8 return userDetails; 9 } 10}
代码示例
1@SpringBootApplication 2public class MovieRecommenderAopApplication implements CommandLineRunner { 3 4 private Logger logger = LoggerFactory.getLogger(this.getClass()); 5 6 @Autowired 7 private FilteringTechnique1 filter1; 8 9 @Autowired 10 private FilteringTechnique2 filter2; 11 12 public static void main(String[] args) { 13 SpringApplication.run(MovieRecommenderAopApplication.class, args); 14 } 15 16 @Override 17 public void run(String... args) throws Exception { 18 logger.info("{}", filter1.contentBasedFiltering()); 19 logger.info("{}", filter2.collaborativeFiltering()); 20 } 21}
No configuration found for ID: 2e3a5f03c9f0cfd6aa9ade24f44df4eef1d1d70b16b6f26c36aa5da4f9118c1b