欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java面試aop和ioc

韓增正1年前6瀏覽0評論

Java面試中AOP和IOC是兩個非常重要的概念,下面我們就逐一來了解。

AOP代表面向切面編程,是一種編程范式,可以通過“橫切關注點”的方式解耦代碼。在AOP中,我們可以將那些通常由面向對象編程 (OOP) 實現的功能分散到各個模塊之間,使其更好的職責分離。 AOP 通過預編譯方式和運行期動態代理實現,在運行期間動態地將代碼切入到類的指定方法、指定位置上的編程技術。

IOC代表控制反轉,是一種設計思想,也是 Spring 框架的核心內容之一。在傳統的程序設計中,我們是在程序中直接編寫實現類,而在IOC思想中,我們只需要在配置文件中配置好實現類,而在程序中通過IOC容器來獲取到實現類對象。這樣可以將程序與實現類解耦,方便修改和維護。

// 以下是AOP代碼實現示例
@Aspect // 表示切面
@Component // Spring中組件注解,添加后該類將被 Spring 容器管理
public class LogAspect {
@Pointcut("execution(* com.example.demo.service.UserService.*(..))") // 切點定義(表示執行 UserService 類所有的方法)
public void pointcut() {}
// 前置通知
@Before("pointcut()")
public void before(JoinPoint joinPoint) {
System.out.println("[LogAspect] before advice ...");
}
// 后置通知
@AfterReturning("pointcut()")
public void afterReturning(JoinPoint joinPoint) {
System.out.println("[LogAspect] afterReturning advice ...");
}
// 異常通知
@AfterThrowing(pointcut = "pointcut()", throwing = "e")
public void afterThrowing(JoinPoint joinPoint, Exception e) {
System.out.println("[LogAspect] afterThrowing advice ...");
}
// 最終通知
@After("pointcut()")
public void after(JoinPoint joinPoint) {
System.out.println("[LogAspect] after advice ...");
}
}
// 以下是IOC代碼實現示例
@Service // Spring中服務注解,添加后該類將被 Spring 容器進行管理
public class UserServiceImpl implements UserService {
@Autowired // Spring自動注入
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public List<User> findAll() {
return userDao.findAll();
}
}