Logo
Section 1 / 10

面向切面编程

了解面向切面编程(Aspect Oriented Programming)的概念,并通过一个示例更好地理解这一概念。

导入

面向切面编程

了解面向切面编程(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

Spring中的数据库关系

术语