2019年3月springboot最新面试题(含详细答案)

springboot项目基础面试题(一)

1.springboot与spring的区别.

引用自官方说法: java在集成spring等框架需要作出大量的配置,开发效率低,繁琐.所以官方提出 spring boot的核心思想:习惯优于配置.可以快速创建开发基于spring框架的项目.或者支持可以不用或很少的spring配置即可.

2.springboot的核心功能与使用优点.

核心功能:
1.1: springboot项目为独立运行的spring项目,java -jar xx.jar即可运行.
1.2: 内嵌servlet容器(可以选择内嵌: tomcat ,jetty等服务器.).
1.3: 提供了starter的pom 配置 简化了 maven的配置.
1.4: 自动配置spring容器中的bean.当不满足实际开发场景,可自定义bean的自动化配置.
1.5: 准生产的应用监控(基于: ssh , http , telnet 对服务器运行的项目进行监控.).
1.6: springboot无需做出xml配置,也不是通过代码生成来实现(通过条件注解.).
使用优点:
1.快速搭建项目,
2,与主流框架集成无需配置集成.
3.内嵌服务容器.
4.具有应用监控.
5.开发部署方便,后期与云计算平台集成方便(docket).

3.springboot中的application.properties配置文件是什么,有哪些配置.

application.properties为boot项目中的一个系统自带的全局属性配置文件. 提供默认属性重写的作用. 可包含重写系统tomcat,spring,springmvc,mybatis等诸多默认配置属性: 列举部分如下:
#全局配置文件: 重写视图解析器的资源地址.
#页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
#?响应页面默认后缀
spring.mvc.view.suffix=.jsp
#静态资源目录配置,
spring.mvc.static-path-pattern=/static/**

#tomcat服务器的配置:
server.port=8081
server.servlet.context-path=/sb2

#默认支持的日志记录:
#logging.config=classpath:logback.xml 加载单独的日志配置文件.
logging.file=d:/test/log.log
logging.level.org.springframework.web=DEBUG

#提供jdbc的基本配置:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/c01?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=org.apache.commons.dbcp.BasicDataSource
#提供mybatis的属性配置: 扫描.
mybatis.mapper-locations=classpath:mapper/*_mapper.xml

4.springboot中常用的starter的组件有哪些.

spring-boot-starter-parent //boot项目继承的父项目模块.
spring-boot-starter-web //boot项目集成web开发模块.
spring-boot-starter-tomcat //boot项目集成tomcat内嵌服务器.
spring-boot-starter-test //boot项目集成测试模块.
mybatis-spring-boot-starter //boot项目集成mybatis框架.
spring-boot-starter-jdbc //boot项目底层集成jdbc实现数据库操作支持.
其他诸多组件,可到maven中搜索,或第三方starter组件到github上查询 .....

5.springboot中的核心启动主函数(main函数)的作用.用到哪些注解.注解的作用.

@SpringBootApplication
public class SpringBoot1Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot1Application.class, args);
}
}
该主函数: 主要启动springboot框架.用于加载容器和诸多默认组件.
用到核心注解: @SpringBootApplication . 作用:用于标识声明一个springboot框架容器.

6.springboot中的常用配置入口有哪些?

            bootstrap.properties/bootstrap.yml //用于配置无需重写的系统常量,例如springcloud项目用到的config配置中心的连接属性等.加载优先级高于application.properties.
            application.properties/application.yml //用于配置重写springboot项目的默认框架属性,例如:重写tomcat,springmvc,日志框架等默认属性.主要提供给spring框架加载使用.
         注: properties后缀名与yml后缀名配置文件二选一即可. 两种不同格式的配置文件而已.

7.springboot项目需要兼容老项目(spring框架),该如何实现.

集成老项目spring框架的容器配置文件即可:
spring-boot一般提倡零配置.但是如果需要配置,也可增加:
@ImportResource({"classpath:spring1.xml" , "classpath:spring2.xml"})
注意:resources/spring1.xml位置.

8.需要加载外部配置文件中的自定义属性,该如何实现.

需求一批量加载多个属性.
步骤一: 首先需要自定义外部配置文件和其中的自定义属性:
user.properties . 存放在resources目录下:
内部:
#自定义配置其他属性:
user.username=zhangsan
user.age=20
步骤二: 加载属性到程序中:
springboot 1.5版本以及之前采用:@ConfigurationProperties(prefix="user",locations={"classpath:user.propeties"})
br/>@ConfigurationProperties(prefix="user",locations={"classpath:user.propeties"})
public class User {
private String username;
private Integer age;
get/set封装省略....
}
springboot 1.5版本以后采用如下:
@PropertySource(value ="classpath:user.properties")
@ConfigurationProperties(prefix = "user")
@Component
br/>@Component
public class User {
private String username;
private Integer age;
get/set封装省略....
}
步骤三:
以上配置需要在main启动函数类文件上激活配置: 新版本中默认开启.
@EnableConfigurationProperties

需求二:如果加载单个属性:
步骤一:省略.如上.
步骤二:
@Value("${name}")
br/>@Value("${name}")
private String name;.

备注:以上外部文件属性加载.切记注意中文乱码问题.

9.springboot支持的默认日志框架有哪些.可以进行哪些设置.

spring-boot: 默认采用Logback作为日志框架.
配置即可:
logging.file=d:/test/log.log
logging.level.org.springframework.web=DEBUG
#logging.config=classpath:logback.xml 加载单独的日志配置文件.
其他配置项......

10.springboot项目的开发环境,生产环境配置该如何实现切换.

        profile配置:
spring-boot默认为了支持不同的配置环境.
配置步骤: 1.提供环境:
    按照命名模板:application-{profile}.properties(例如: application-pro1.properties/application-pro2.properties)
    2.选择激活的环境:
    application.properties中设置:spring.profiles.active=pro1

springboot项目WEB模块开发面试题(二)

11.什么是springboot项目中的自动配置与手动配置.如果需要手动配置该如何实现.

        自动配置: boot项目默认支持很多框架的集成. 添加组件即可. 只需要: 针对application.properties做出自动配置的属性重写即可完成.默认开启.
        举例:
         spring boot 采用自动配置集成freemarker模板引擎:(超级简单)
        前提: 构建spring boot项目.
        1.引入模板组件.
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        2.编写Controller和freemarker模板.位于resources/templates.

        手动配置: 手动自定义web组件,代替boot项目默认支持的组件与配置.
        举例:
        采用手动配置参数,集成freemarker模板引擎.
        1.前提: spring-boot-starter-web .引入.
        2.编写过程类似于springMVC.
        3.额外的SpringMVC的容器配置:
        默认基于spring boot的基本默认配置即可(需要修改: 位于application.properties).
        需要手动编写类似于spring容器可以:
        @Configuration
        Public class MVCConfiguration extends WebMvcConfigurerAdapter{ 

        //视图解析器默认地址为: /resources , /static , /templates, /public,/META
        @Bean
                public InternalResourceViewResolver defaultResolver(){
                        InternalResourceViewResolver resourceViewResolver = new InternalResourceViewResolver();
                        resourceViewResolver.setPrefix("classpath:/templates/");
                        resourceViewResolver.setSuffix(".html");
                        return resourceViewResolver;
                }

        //解析视图时,默认从以上地址中依次寻找视图资源加载,如果自定义例如Freemarker模板视图解析器的资源地址,那么:
        @Bean
                public FreeMarkerViewResolver defaultResolver(){
                        FreeMarkerViewResolver freeMarkerViewResolver = new FreeMarkerViewResolver();
        //      freeMarkerViewResolver.setPrefix("classpath:/views/");
                        freeMarkerViewResolver.setSuffix(".html");
                        freeMarkerViewResolver.setContentType("text/html;charset=utf-8");
                        return freeMarkerViewResolver;
                }

                @Bean
                public FreeMarkerConfigurer freeMarkerConfigurer(){
                        FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
                        configurer.setTemplateLoaderPaths("classpath:/views/");
                        configurer.setDefaultEncoding("utf-8");
                        return configurer;
                }

        //如果不设置静态资源目录,默认: classpath: /static/  ,  classpath: /public/  ,  classpath: /resources/  ,  classpath: /META-INF/resources/
                @Override
                public void addResourceHandlers(ResourceHandlerRegistry registry) {
                     registry.addResourceHandler("/image/**").addResourceLocations("classpath:/static/image/");
                        registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
                        registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");
                }

        }
        以上手动配置总结: 如果想要完全自定义,接管spring boot中的所有web配置,可以:
        @Configuration: 创建mvc适配器子类的对象.  并绑定至spring容器中.
        @EnableWebMvc: 扫描spring容器中的mvc适配器子类对象.
        Public class MVCConfiguration extends WebMvcConfigurerAdapter{ 重写方法即可. }

12.springboot项目web开发时如何集成web组件:servlet.filter.listener.

                前提: 自定义servlet(实现或继承HttpServlet),filter(实现或继承Filter),listener(实现或继承ServletContextListener).
                方式一: 将以下组件直接提供在main()启动类中.用于加载.
                @Bean
                public ServletRegistrationBean servletRegistrationBean() {
                    return new ServletRegistrationBean(new CustomServlet(), "/custom");
                }

                @Bean
                public FilterRegistrationBean filterRegistrationBean() {
                    return new FilterRegistrationBean(new CustomFilter(), servletRegistrationBean());
                }

                @Bean
                public ServletListenerRegistrationBean<CustomListener> servletListenerRegistrationBean() {
                    return new ServletListenerRegistrationBean<CustomListener>(new CustomListener());
                }
                方式二: 启动类 实现ServletContextInitializer .重写onStartup().
                @SpringBootApplication
                public class SpringBootDemo102Application implements ServletContextInitializer {

                    @Override
                    public void onStartup(ServletContext servletContext) throws ServletException {
                        servletContext.addServlet("customServlet", new CustomServlet()).addMapping("/custom");
                        servletContext.addFilter("customFilter", new CustomFilter())
                                .addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), true, "customServlet");
                        servletContext.addListener(new CustomListener());
                    }
                }

                方式三:启动类开启扫描: @ServletComponentScan
                工具组件采用注解进行加载:
                @WebFilter(filterName = "customFilter", urlPatterns = "/*")
                @WebListener
                @WebServlet(name = "customServlet", urlPatterns = "/custom")

13.springboot+springmvc如何实现集成( 视图模板: 基于JSP).官方不推荐,但工作有需求.

                1.引入pom.xml组件:
                <dependency>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-starter-tomcat</artifactId>
                </dependency>
                <dependency>
                         <groupId>org.apache.tomcat.embed</groupId>
                         <artifactId>tomcat-embed-jasper</artifactId>
                </dependency>
                <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>javax.servlet-api</artifactId>
                </dependency>
                <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>jstl</artifactId>
                </dependency>

                2. 增加application.properties配置:
                #?页面默认前缀目录
                spring.mvc.view.prefix=/WEB-INF/jsp/
                #?响应页面默认后缀
                spring.mvc.view.suffix=.jsp
                #静态资源目录配置,
                spring.mvc.static-path-pattern=/static/**

                3.编写controller和jsp: 测试即可.
                (jsp页面中可直接请求${pageContext.request.contextPath}.)

                补充: src/main/webapp/WEB-INF 创建该目录.用于存储页面资源等.
                右击项目--->Modules----> web(springboot无需xml. 指定webapp目录为资源根目录.) 并create artifacts ---> apply.即可

14.springboot+mybatis如何实现集成.(注意: 官方默认支持的spring-data框架不在此处介绍.)

                        步骤一: 填充pom.xml:
                                <dependency>
                                        <groupId>org.mybatis.spring.boot</groupId>
                                        <artifactId>mybatis-spring-boot-starter</artifactId>
                                        <version>1.3.2</version>
                                </dependency>

                                <dependency>
                                        <groupId>commons-dbcp</groupId>
                                        <artifactId>commons-dbcp</artifactId>
                                        <version>1.4</version>
                                </dependency>

                                <dependency>
                                        <groupId>org.springframework.boot</groupId>
                                        <artifactId>spring-boot-starter-jdbc</artifactId>
                                </dependency>

                                <dependency>
                                        <groupId>mysql</groupId>
                                        <artifactId>mysql-connector-java</artifactId>
                                        <version>5.1.40</version>
                                </dependency>

                                步骤二: application.properties
                                spring.datasource.driver-class-name=com.mysql.jdbc.Driver
                                spring.datasource.url=jdbc:mysql://localhost:3306/c01?useUnicode=true&characterEncoding=utf-8
                                spring.datasource.username=root
                                spring.datasource.password=root
                                spring.datasource.type=org.apache.commons.dbcp.BasicDataSource

                                mybatis.mapper-locations=classpath:mapper/*_mapper.xml
                                步骤三: com.hfxt.demo1.dao.UserDao
                                public interface UserDao {
                                        @ResultMap("BaseResultMap")
                                        @Select("select * from tb_book")
                                        List<User> selectAll(User u1);
                                }
                                步骤四: resources/mapper/User_mapper.xml
                                <?xml version="1.0" encoding="UTF-8"?>
                                <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
                                <mapper namespace="com.hfxt.demo1.dao.UserDao">
                                        <resultMap id="BaseResultMap" type="com.hfxt.demo1.domain.User">
                                                <id column="id" jdbcType="INTEGER" property="id"/>
                                                <result column="book_name" jdbcType="VARCHAR" property="bookName"/>
                                                <result column="book_price" jdbcType="VARCHAR" property="bookPrice"/>
                                        </resultMap>
                                </mapper>
                                步骤五: spring容器扫描接口.
                                @SpringBootApplication
                                @MapperScan("com.hfxt.demo1.dao")
                                public class Demo1Application { }
                                步骤六: 注入dao到service中.
                                //    @Resource
                                        @Autowired
                                        private UserDao userDao;

15.springboot项目的常用启动部署方式有哪些.

        1.启动main主函数即可.
        2.采用maven插件的启动方式:新建maven启动方式,并明确working directory为项目根目录. Command Line为 spring-boot:run 即可ok启动.  该方式必须为标准的tomcat容器.
        3.生产环境下的部署启动方式:
        实际项目部署: 切换至父项目pom.xml根目录中, mvn install package 打包. 将target中生成的war包项目部署至tomcat/webapp中,直接启动tomcat即可. 注意:JAVA_HOME要设置为1.8 因为springboot2.0 必须至少jdk环境为1.8.

补充: 以上springboot项目的公共配置属性清单地址如下:

https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

总结:

以上boot项目基础内容纯属笔者亲自手码, 终于写完一篇了.如有瑕疵希望与大家指正交流学习. 笔者微信: 15256075342.

原文地址:https://blog.51cto.com/14185725/2364360

时间: 2024-10-14 06:24:08

2019年3月springboot最新面试题(含详细答案)的相关文章

2019年5月office2019最新激活密钥,可以电话激活

office2019是目前最新的office办公软件,尤其是office2019专业增强版本,运行流畅,功能强大.目前小编就把这个版本的密钥为大家分享一下.下载地址,"msdn,我告诉你"网站,应用软件-office2019.复制链接后用迅雷下载即可.office2019专业增强版最新激活密钥:[office2019激活密钥] 1.office2019专业增强版本(office2019 pro Plus) NJHVR-FK6XR-M97MB-P8CXD-FM4PJ GRBR4-J4N3

unity3d最新面试题与参考答案汇总

1.在类的构造函数前加上static会报什么错?为什么? 构造函数格式为 public+类名,如果加上static会报错(静态构造函数不能有访问修饰符)原因:静态构造函数不允许访问修饰符,也不接受任何参数: 无论创建多少类型的对象,静态构造函数只执行一次: 运行库创建类实例或者首次访问静态成员之前,运行库调用静态构造函数: 静态构造函数执行先于任何实例级别的构造函数: 显然也就无法使用this和base来调用构造函数. 2.C# String类型比stringBuilder类型的优势是什么? 如

您可能不知道Java基础40道常见面试题及详细答案!

引言上一篇 文章我们实现了区块链的工作量证明机制(Pow),尽可能地实现了挖矿.但是距离真正的区块链应用还有很多重要的特性没有实现.今天我们来实现区块链数据的存储机制,将每次生成的区块链数据保存下来.有一点需要注意,区块链本质上是一款分布式的数据库,我们这里不实现"分布式",只聚焦于数据存储部分. 数据库选择到目前为止,我们的实现机制中还没有区块存储这一环节,导致我们的区块每次生成之后都保存在了内存中.这样不便于我们重新使用区块链,每次都要从头开始生成区块,也不能够跟他人共享我们的区块

Android 面试题(有详细答案)

1.简述Activity的生命周期 Onreate()创建时,OnStart()启动OnResume()与用户交互时调用,onReStart()activity再次启动之前调用 onPause()当前activity暂停,另一个activity启动时调用,Onstop()当activity变的不可见时调用,onDestory()当activity被销毁之前调用 2.对象Object读写的是哪两个流 objectinputstream  objectoutputstream 3.你对Android

BTA 常问的 Java基础40道常见面试题及详细答案(山东数漫江湖))

八种基本数据类型的大小,以及他们的封装类 引用数据类型 Switch能否用string做参数 equals与==的区别 自动装箱,常量池 Object有哪些公用方法 Java的四种引用,强弱软虚,用到的场景 Hashcode的作用 HashMap的hashcode的作用 为什么重载hashCode方法? ArrayList.LinkedList.Vector的区别 String.StringBuffer与StringBuilder的区别 Map.Set.List.Queue.Stack的特点与用

2019年2月最新office2016永久激活密钥和教程

虽然office2019已经推出,但是office2016凭借其出色的稳定性和流畅性依然占据了办公软件的半壁江山.但是office2016的激活始终是个头疼的问题,今天小编就为大家分享2019年2月最新的office2016永久激活密钥和教程,希望能帮助大家.安装包的获取主要有以下两种途径.1."msdn 我告诉你"网站.2.office官网.今天小编介绍的是从office官网下载和激活office2016.首先准备好自己的微软账户登录office官网,setup.office.com

【2019年4月26日】最新指数基金估值表(坚持定投终能胜利)

(本篇文章阅读时间约2分钟) 大家好,我是牛九老师,专注于研究指数基金领域很多年,欢迎来到[牛九老师的投资者大家庭]. 每天我会给大家分享投资心得,发布最新的指数基金估值. 每天只需五分钟,大家跟随老师一起坚持投资自己.实现财富增值,战胜通货膨胀,共同走向财务自由之路,过上自己真正想要的生活! 我们坚持在每周四(下午三点之前)进行指数基金的定投,届时会向大家推荐当期的定投组合,强烈推荐大家在支付宝中购买基金,方便安全有保障! 下面是我为大家精心制作的2019年4月26日[第106期]指数基金估值

超级面试题2019年5月第1次发布

超级面试题2019年5月第1次发布.本次发布,将题库的553道题按照关键字分成45个章节,方便对比复习查阅综合训练.题库包括阿里巴巴.好未来.平安好医生.美团.百度.饿了么.有赞.陆金所.今日头条.携程.阿里.百词斩.招商银行等公司的面试题.http://www.chaojimianshiti.com 原文地址:https://blog.51cto.com/14264571/2398333

2019年5月最新win10教育版1903激活密钥和下载

2019年5月微软发布了最新win10教育版1903版本的系统,win10 1903版本在之前版本的基础上做了很多优化和提升,也加入了很多新的功能,欢迎大家测试.官方原版纯净版下载地址:cn_windows_10_business_editions_version_1903_x64_dvd_e001dd2c.isoed2k://|file|cn_windows_10_business_editions_version_1903_x64_dvd_e001dd2c.iso|4815527936|47