-
什么是全文检索技术?应用场景,为什么使用Solr?
全文检索:是目前使用最广泛的搜索引擎,它的工作原理是计算机索引程序扫描文章中每一个词,对每一个词建立索引,并指明该词出现的频率和位置,当用户查询时,检索程序根据事先建立的索引进行查找,并将结果返回给用户.
应用场景:查询
为什么使用solr:
- solr更加成熟,稳定.
- 支持添加多种格式的索引.
- 可以在不考虑索引的同时进行索引,速度更快.
-
SpringMVC中的Bean是线程安全的吗? 说出你的解决方案?
不是线程安全的 ;因为他是单例的被多个线程共享
解决方案:
- 1.如果是web应用,可以使用Spring Bean的作用域中的request,在controller类前面加上 @Scope("****"),表明每次请求都会生成一个新的Bean对象
- 2.使用ThreadLocal,ThreadLocal会为每一个线程提供一个独立的变量副本,这样在多线程对数据访问就不会出现冲突
-
SpringMVC的执行流程?
- 浏览器发送请求被前端控制器(DispatchServlet)拦截
- 前端控制器请求(处理器映射器)HandlerMapping查找Handler,根据xml文件和注解查找路径
- 处理映射器将Handler返回给前端控制器
- 前端控制器调用处理器适配器执行Handler,
- Handler执行完成返回ModelAndView给处理器适配器
- 处理器适配器将ModelAndView返回给前端控制器
- 前端控制器请求视图解析器,将ModelAndView解析成视图,视图解析器向前端控制器返回View
- 前端控制器进行视图渲染,返回给用户
-
@RequestBody 和@ResponseBody的区别
@ResponseBody:将方法的返回值以json,xml等格式写入HTTP body中
@RequestBody :将HTTP请求插入到方法中,使用合适的HTTPMessageConvert将请求体写入某个对象
-
@RequestParam和@PathViriable的区别
@RequestParam和 @PathViriable 注解是用于从 request 中接收请求的,两个都可以接收参数
关键点不同的是
- @RequestParam:用于将指定的请求参数赋值给方法中的形参。
- @PathViriable:是获得请求url中的动态参数的
-
@Resource和 @Autowired/ @Qualifier的区别
- @Autowired:是spring的注解,默认是按照type注入的
- @Qualifier:spring的注解,按名字注入,当出现两个及以上的bean时不知道注入哪个,可作为@Autowired的修饰用
- @Resource:时spring的注解,默认通过name选择性注入
-
@RequestMapping注解作用
用来处理请求地址映射,可以用在类和方法上,
有6个属性:
1、value:指定请求的真实地址,
2、method:指定请求的类型,分为get,post,pull,delete等
3、consumes:指定处理请求的提交内容类型(Content-Type),
4、produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
5、params:指定request中必须包含某些值,才允许该方法执行
6、headers:指定request中必须包含某些指定的header值,才允许该方法执行
-
@Controller, @Service, @Repository,@Component作用
@Controller:
- 用于标记一个类,标记spring MVC的控制层bean,被其标记的类就是一个控制器
@Service:
- 用于标记一个类,标记spring MVC的业务层,
- 创建的对象名必须是类名首字母小写,
- 是单例的
@Repository:dao层是注解,用来注解接口,告诉spring创建一个对应的实例
@Component:把普通的pojo实例化到spring容器中
-
@Transactional注解作用
是spring中最常用的注解之一,我们在需要对一个service方法添加事务时,加上这个注解,如果发生unchecked exception,就会发生rollback
-
@Configuration注解作用
是一个类级别的注释,指示对象是bean定义的来源。 @Configuration classes通过公共 @Bean 注释方法声明bean 。 @Bean 对 @Configuration 类上的方法的调用也可用于定义bean间依赖项。