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
sql数据库的实际应用#静态资源⽬录配置,
spring.mvc.static-path-pattern=/static/**
#tomcat服务器的配置:
server.port=8081
t-path=/sb2
#默认⽀持的⽇志记录:
#fig=l 加载单独的⽇志配置⽂件.
logging.file=d:/test/log.log
springframework.web=DEBUG
#提供jdbc的基本配置:
spring.datasource.sql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/c01?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
pe=org.apachemons.dbcp.BasicDataSource
#提供mybatis的属性配置: 扫描.
mybatis.mapper-locations=classpath:mapper/*_l
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.l //⽤于配置⽆需重写的系统常量,例如springcloud项⽬⽤到的config配置中⼼的连接属性等.加载优先级⾼于application.properties.
application.l //⽤于配置重写springboot项⽬的默认框架属性,例如:重写tomcat,springmvc,⽇志框架等默认属性.主要提供给spring框架加载使⽤.
注: properties后缀名与yml后缀名配置⽂件⼆选⼀即可. 两种不同格式的配置⽂件⽽已.
7.springboot项⽬需要兼容⽼项⽬(spring框架),该如何实现.
集成⽼项⽬spring框架的容器配置⽂件即可:
spring-boot⼀般提倡零配置.但是如果需要配置,也可增加:
@ImportResource({"l" , "l"})
注意:l位置.
8.需要加载外部配置⽂件中的⾃定义属性,该如何实现.
需求⼀批量加载多个属性.
步骤⼀: ⾸先需要⾃定义外部配置⽂件和其中的⾃定义属性:
user.properties . 存放在resources⽬录下:
内部:
#⾃定义配置其他属性:
user.username=zhangsan
user.age=20
步骤⼆: 加载属性到程序中:
springboot 1.5版本以及之前采⽤:
备注:以上外部⽂件属性加载.切记注意中⽂乱码问题.
9.springboot⽀持的默认⽇志框架有哪些.可以进⾏哪些设置.
spring-boot: 默认采⽤Logback作为⽇志框架.
配置即可:
logging.file=d:/test/log.log
springframework.web=DEBUG
#fig=l 加载单独的⽇志配置⽂件.
其他配置项......
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
mysql面试题常问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.引⼊l组件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>at.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页⾯中可直接请求${tPath}.)
补充: src/main/webapp/WEB-INF 创建该⽬录.⽤于存储页⾯资源等.
右击项⽬--->Modules----> web(springboot⽆需xml. 指定webapp⽬录为资源根⽬录.) 并create artifacts ---> apply.即可
14.springboot+mybatis如何实现集成.(注意: 官⽅默认⽀持的spring-data框架不在此处介绍.)
步骤⼀: 填充l:
<dependency>
<groupId&batis.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>
hdmi是什么设备与计算机连接的接口类型<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
步骤⼆: application.properties
spring.datasource.sql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/c01?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
pe=org.apachemons.dbcp.BasicDataSource
mybatis.mapper-locations=classpath:mapper/*_l
步骤三: com.hfxt.demo1.dao.UserDao
public interface UserDao {
@ResultMap("BaseResultMap")
@Select("select * from tb_book")
List<User> selectAll(User u1);
}
步骤四: resources/mapper/l
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/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")colormap(hot)
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.⽣产环境下的部署启动⽅式:
实际项⽬部署: 切换⾄⽗项⽬l根⽬录中, mvn install package 打包. 将target中⽣成的war包项⽬部署⾄tomcat/webapp中,直接启动tomcat即可. 注意:JAVA_HOME要设置为1.8 因为springboot2.0 必须⾄少jdk环境为补充: 以上springboot项⽬的公共配置属性清单地址如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论