整理Java面试题
程序员文章站
2022-04-12 21:40:28
...
这里是引用
只为成功找方法,不为失败找借口!
spring mvc运行原理
- Spring是一个模块,基于MVC的一个框架。MVC是一种设计模式。M:Model;V:View,C:Controller
- 用户发送请求由前端控制器DispatcherServlet来决定哪个页面的控制器进行处理,由HandlerMapping查找与请求匹配的Handler,再由DispatcherServlet来调用HandlerAdaper中Handler来处理,处理完会返回一个ModelAndView,HandlerAdapter发送给DispatcherServlet进行视图的解析(ViewResolver),ViewResolver将逻辑视图解析成具体的视图,返回给DispatcherServlet,再进行视图渲染(View),最后通过DispatcherServlet返回给用户。
介绍spring aop 和 ioc
-
IOC: 控制反转 对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系,所有的类的创建、销毁都由 spring来控制,IOC在系统的运行中,动态的向某个对象提供它所需要的其他对象
由IOC容器帮对象找相应的依赖对象并注入(依赖注入)【注入对象所需要的对象,资源或者常量数据】
AOP:面向切面编程,可以动态地添加和删除在切面上的逻辑而不影响原来的代码,可以用作日志记录,统一异常处理,事务处理,权限检查等方面
@Aspect
@Component
public class RequestLogAspect {
private static final Logger logger = LoggerFactory.getLogger(RequestLogAspect.class);
@Pointcut("execution(public * com.ckq.controller..*.*(..))")
public void webLog() {
}
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) {
//接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes)joinPoint;
HttpServletRequest request = attributes.getRequest();
//记录下请求的内容
logger.info("URL : " + request.getRequestURL().toString());
logger.info("IP :" + request.getRemoteAddr());
}
@AfterReturning(returning = "ret", pointcut = "webLog()")
public void AfterRetuning(Object ret) {
// 处理完请求,返回内容
logger.info("RESPONSE : " + ret);
}
}
spring中bean注入的几种方式
三种bean配置方式
- 基于xml 配置
<bean id="logDao" class="com.baobaotao.anno.LogDao"/>
<bean id="userDao" class="com.baobaotao.anno.UserDao"/>
<bean class="com.baobaotao.anno.LogonService">
<property name="logDao" ref="logDao"></property>
<property name="userDao" ref="userDao"></property>
</bean>
- 基于注解
@Autowired
@Qualifier 指定注入Bean名称
@Resource
- 基于Java类提供的bean定义
@Configuration
@Component(默认单例模式)
spring 和 springboot 的区别
- spring boot中的一些特性
- 创建独立的spring 应用
- 嵌入Tomcat,Jetty,Undertow 容器
- 提供starters 建华构建配置
- 尽可能的自动配置spring 应用
- 提供生成指标,健康检查配置
- 没有代码生成和xml 配置要求
- Maven依赖
spring 创建的web 应用需要最小依赖项
springboot 只需要一个依赖项启动和运行web 应用程序<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.0.6.RELEASE</version> </dependency> spring-boot-starter-data-jpa spring-boot-starter-security spring-boot-starter-test spring-boot-starter-web spring-boot-starter-thymeleaf
线程的生命周期,线程的状态
新建 new
运行 Runnable(Running,Ready)
无限期等待 Wait
限期等待 Timed Wait
阻塞 Block
结束 Terminated
多线程的实现方式
- 基础Thread类,重写run 方法
- 实现Runnable 接口,重写run方法,实现Runnable 接口的实现类的实例对象作为Thread构造函数的target
- 通过Callable 和 FutureTask 创建线程
- 通过线程池创建线程
上一篇: macOS Sierra,Xcode 8配置openCV3
下一篇: 正则表达式简介(13)