当前位置: 首页 > news >正文

Spring Boot的web基础配置

1、自定义拦截器

增加一个拦截器,需要通过继承WebMvcConfigurerAdapter然后重写父类中的方法进行扩展。

@Configuration
public class MySpringMvcConfig extends WebMvcConfigurerAdapter {@Overridepublic void addInterceptors(InterceptorRegistry registry) {HandlerInterceptor handlerInterceptor = new HandlerInterceptor() {@Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {System.out.println("自定义拦截器。。。");return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {}};// 添加拦截器并设置拦截规则registry.addInterceptor(handlerInterceptor).addPathPatterns("/**");}
}

2、自定义消息转化器

自定义消息转化器有两种实现方式,一种是@Bean方式,另一种是自定义拦截器。

1)@Bean方式

只需要在@Configuration的类中添加消息转化器的@bean加入到Spring容器,就会被Spring Boot自动加入到容器中。

// spring boot默认就有消息转化器,其编码格式为utf-8
@Bean
public StringHttpMessageConverter stringHttpMessageConverter() {StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(Charset.forName("UTF-8"));return stringHttpMessageConverter;
}

2)自定义拦截器方式

WebMvcConfigurerAdapter的功能很强大,除了可以配置拦截器外,还可以配置消息转换器。

@Configuration
public class MySpringMvcConfig extends WebMvcConfigurerAdapter {@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(Charset.forName("UTF-8"));converters.add(stringHttpMessageConverter);}
}

3、读取外部的配置文件

@Configuration
@PropertySource(value = { "classpath:jdbc.properties", "classpath:base.properties" }, ignoreResourceNotFound = true)
public class 任意类 {}

4、Druid DataSource的配置

Druid提供了一个高效、功能强大、可扩展性好的数据库连接池,常用于替换DBCP和C3P0。

1)引入依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.11</version>
</dependency>

2)jdbc.properties

项目中一般会创建一个jdbc.properties文件来记录数据库的连接信息。

#MySQL
jdbc.url=jdbc:mysql://127.0.0.1:3306/dbxxx?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
#Druid
jdbc.initialSize=0
jdbc.minIdle=0
jdbc.maxActive=150

3)配置Druid数据源

建议将配置Druid数据源的操作放在@SpringBootApplication注解的类中。

@SpringBootApplication
@Configuration
@PropertySource(value = {"classpath:jdbc.properties"})
public class MyWebApplication{@Value("${jdbc.url}")public String jdbcUrl;@Value("${jdbc.username}")public String jdbcUsername;@Value("${jdbc.password}")public String jdbcPassword;@Value("${jdbc.initialSize}")public int jdbcInitialSize;@Value("${jdbc.minIdle}")public int jdbcMinIdle;@Value("${jdbc.maxActive}")public int jdbcMaxActive;@Beanpublic ServletRegistrationBean druidServletRegistrationBean() {ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();servletRegistrationBean.setServlet(new StatViewServlet());servletRegistrationBean.addUrlMappings("/druid/*");return servletRegistrationBean;}@Beanpublic FilterRegistrationBean duridFilterRegistrationBean() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();filterRegistrationBean.setFilter(new WebStatFilter());HashMap<String, String> initParams = new HashMap<>();// 设置忽略请求initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");filterRegistrationBean.setInitParameters(initParams);filterRegistrationBean.addUrlPatterns("/*");return filterRegistrationBean;}@Bean(initMethod = "init", destroyMethod = "close")public DruidDataSource druidDataSource() {DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setUrl(jdbcUrl);druidDataSource.setUsername(jdbcUsername);druidDataSource.setPassword(jdbcPassword);druidDataSource.setInitialSize(jdbcInitialSize);druidDataSource.setMinIdle(jdbcMinIdle);druidDataSource.setMaxActive(jdbcMaxActive);return druidDataSource;}
}

5、数据库框架集成

1)jpa集成

在pom.xml中引用jpa及数据库驱动(如:mysql)依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>
在application.yml文件中配置
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1/dbgirlusername: rootpassword: 123456jpa:hibernate:ddl-auto: update  #第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。show-sql: true

2)MyBatis集成

Mybatis和Spring Boot的整合有两种方式:

第一种:使用mybatis官方提供的Spring Boot整合包实现,地址:spring-boot-starter

第二种:使用mybatis-spring整合的方式,也就是我们传统的方式

这里推荐并使用第二种方式,因为可以很方便的控制Mybatis的各种配置。这里假设你已经配置过数据源了(数据源可以是druid、dbcp、c3p0...)。

首先,需要在pom.xml文件中引用mybatis依赖

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.0</version>
</dependency>
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version>
</dependency>

然后,创建一个Mybatis的配置类:

@Configuration
public class MybatisConfig {@AutowiredDruidDataSource druidDataSource;@Bean@ConditionalOnMissingBean// 当Spring容器中没有SqlSessionFactoryBean时才创建public SqlSessionFactoryBean sqlSessionFactoryBean() {SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();// 设置数据源sqlSessionFactory.setDataSource(druidDataSource);// 设置别名扫描包sqlSessionFactory.setTypeAliasesPackage("com.lqr.demo3.bean");// 设置Mybatis的配置文件位置PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();Resource mybatisConfigXml = resolver.getResource("classpath:mybatis-config.xml");sqlSessionFactory.setConfigLocation(mybatisConfigXml);return sqlSessionFactory;}}

最后,创建Mapper接口的扫描类MapperScannerConfig:

@Configuration
@AutoConfigureAfter(MybatisConfig.class)// Mybatis的扫描配置必须在SqlSessionFactory被创建之后
public class MapperScanConfig {@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();mapperScannerConfigurer.setBasePackage("com.lqr.demo3.mapper");return mapperScannerConfigurer;}}

6、设置事务管理

Spring Boot中推荐使用@Transactional注解来申明事务。

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

当引入jdbc依赖之后,Spring Boot会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager,所以我们不需要任何额外配置就可以用@Transactional注解进行事务的使用。

@Service
@Transactional
public class GirlService {@Transactionalpublic void insertGirl() {Girl girlA = new Girl();girlA.setCupSize("A");girlA.setAge(18);girlRespository.save(girlA);}
}

@Transactional不仅可以注解在方法,也可以注解在类上。当注解在类上时,意味着此类所有public方法都会开启事务。如果类级别和方法级别同时使用了@Transactional注解,则使用在类级别的注解会重载方法级别的注解。

7、开启jsp支持

Spring boot默认内嵌的tomcat是不支持jsp页面的,如果项目中使用到了jsp,需要导入如下依赖才能正常访问。

<dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><scope>provided</scope>
</dependency>
http://www.dtcms.com/a/617613.html

相关文章:

  • 下载网站上的表格 怎么做天津市建设工程质量安全监督管理总队网站
  • 【Linux日新月异(八)】CentOS 7系统资源监控与排查深度指南:性能调优全景图
  • word中怎么查看插入的图片占用内存大小来压缩word文件整体大小
  • Flink CDC + MaxCompute用 MaxCompute Connector 打通实时入湖通道
  • 【AI 学习】AI Agent 开发进阶:架构、规划、记忆与工具编排
  • 二十三、Transformer架构详解
  • JAR逆向工程实战对比:传统工具 vs 自动化解决方案
  • 算法学习--离散化
  • 沈阳住房和城乡建设厅网站越南语网站怎么做
  • React + ECharts 实践:构建可交互的数据可视化组件
  • Devconnect 活动报名中!dAI 路线图、跨链 / 预言机创新新动态!Linera 实战+Web3 安全公开课上线!
  • 华为、阿里巴巴、字节跳动 100+ Linux面试问题总结(一)
  • [OpenHarmony6.0][Docker][环境]OHOS6 编译环境构建指南
  • 空包网站建设属于哪类网站排名优化推广厦门
  • async await 的前世今生
  • 外卖项目day02
  • 多电压输出场景下ASP3605负载调整率的一致性验证
  • 使用rust复刻linux经典命令:wc(文本统计工具)
  • 网站设计公司哪里好镇江网站建设找思创网络
  • 45_FastMCP 2.x 中文文档之FastMCP集成:Azure (Entra ID) 指南
  • 【微服务中间件】RabbitMQ 全方位解析:同步异步对比、SpringAMQT基础入门、实战、交换机类型及消息处理详解
  • 单点高ROI场景医疗AI编程分析与实践
  • 使用python进行PostgreSQL 数据库连接
  • 天线类型和指标介绍
  • Netty编写Echo服务器
  • 沙雕图片视频制作软件。制图内都是搞笔图制作模板,表白墙,节日祝福制作
  • 开源项目分享 图像深度学习Demo项目
  • 性能优化方向
  • 2.socket套接字
  • 旧网站如何优化设计制作实践活动有哪些