SpringBoot介绍前言一、SpringBoot是什么?二、使用步骤
1.java配置2.SpringBoot属性注入3.自动配置原理4.SpringBoot实 *** 5.整合jdbc和事务 总结
前言
java一直被人诟病的一点就是臃肿、麻烦。当我们还在辛苦搭建项目时,可能使用其他语言的程序员已经把功能写好了,比如有下面两方面的原因:
复杂的配置(项目各种配置其实就是开发时的损耗,挤占写应用程序逻辑的时间)
混乱的依赖管理(决定项目需要哪些库让人头疼,还得弄清楚这些库版本之间是否会有冲突。一旦写错依赖版本,不兼容问题必然让人头疼)
在此我们提出SpringBoot脚手架。用来快速构建庞大的Spring项目,减少一切的xml的配置,做到开箱即用,迅速上手,更多的关注到业务本身。
提示:以下是本篇文章正文内容
一、SpringBoot是什么?SpringBoot简化了基于Spring的应用开发,只需要“run”就能创建独立的Spring应用。SpringBoot是一个开箱即用的设置(提供默认设置,存放默认配置的包就是启动器starter)。我们可以使用Spring Boot创建java应用,并使用java-jar启动它。
总结出,它可以给开发者提供一个非常快速的,广泛接受的入门体验;开箱即用,通过自己设置参数(.properties)。
二、使用步骤 1.java配置主要靠java类和一些注解,比较常用的注解有:
@Configuration:声明一个类作为配置类,代替xml文件
@Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签
@Value:属性注入
@PropertySource:指定外部属性文件(“classpath:jdbc.properties”)
在pom.xml文件中引入Druid连接池依赖:
2.SpringBoot属性注入com.alibaba druid1.1.6
代码如下(示例):
方案一: jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/li7 jdbc.password=root 类注解: @Configuration @PropertySource("classpath:jdbc.properties") @Value("${jdbc.url}") String url; @Value("${jdbc.driverClassName}") String driverClassName; @Value("${jdbc.username}") String username; @Value("${jdbc.password}") String password; @Bean public DataSource dataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClassName); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } 方案二:(适合多个datasource用) jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/li7 jdbc.password=root 类注解: @Configuration @EnableConfigurationProperties(JdbcProperties.class) @Bean(注入) public DataSource dataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClassName); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } //@Autowired(注入) @Autowired privarte JdbcProperties prop; //构造函数注入 private JdbcProperties prop; public JdbcConfig(Jdbcproperties){ this.prop = prop; } 在JdbcProperties类中添加: @ConfigurationProperties(prefix = "jdbc") @Data public class JdbcProperties { String url; String driverClassName; String username; String password; } 方案三:(适合一个datasource用) 原文件同名同类型 直接在JdbcProperties类中添加:(无需其他配置类) @Bean @ConfigurationProperties(prefix = "jdbc") public DataSource dataSource(){ return new DruidDataSource(); }//检测到bean调用DruidDataSource();匹配前缀是jdbc的配置属性
yaml文件配
优雅方案: jdbc: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/li7 username:root password:root3.自动配置原理
图中出现了两个东西值得我们注意:
注解:@SpringBootApplication
run方法:SpringApplication.run()
首先分析注解:
最后的三个需要重点注意
@SpringBootConfiguration:源码内又出现一个@Configuration注解。通过注释阅读,这个注解的作用就是声明当前类的一个配置类,然后Spring会自动扫描到添加了@Configuration的类,并且读取其中的配置信息。而@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。
@EnableAutoConfiguration:SpringBoot内部对大量的第三方库或Spring内部进行了默认配置,这些配置是否生效,取决于我们是否引入了对应库(如:spring-boot-starter-web)所需的依赖,如果有那么默认配置就会生效。使用SpringBoot构建一个项目,只需要引入所需框架依赖。
@ComponentScan:启动类会放在一个比较前的包目录中
1.自定义配置(整合SpringMVC):修改端口(将全局属性中的server.port=8080改好)
2.访问静态资源(路径:·classpath:meta-INF/resources/,classpath:/resources/ ,classpath:/static/,classpath:/public`
3.添加拦截器:官网的解释为,保持SpringBoot的一些默认mvc特征,同时又想自定义一些mvc配置(拦截器),让一个类实现WebMvcConfigurer,并且添加@Configuration注解,但不能加@EnableWebMvc注解。(通过实现WebMvcConfigurer并添加@Configuration注解来实现自定义部分SpringMvc配置。
public class LoginInterceptor implements HandlerInterceptor { private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { logger.debug("preHandle method is now running!"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { logger.debug("postHandle method is now running!"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { logger.debug("afterCompletion method is now running!"); } } @Configuration public class MvcConfig implements WebMvcConfigurer{ @Bean public LoginInterceptor loginInterceptor(){ return new LoginInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { // 通过registry来注册拦截器,通过addPathPatterns来添加拦截路径 registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/**"); } } #设置项目包的日志级别为debug logging.level.com.ph=debug5.整合jdbc和事务
SpringBoot启动器:
org.springframework.boot spring-boot-starter-jdbc
数据库驱动:
mysql mysql-connector-java
事务:
@Service public class UserService{ @Autowired private UserMapper user Mapper; public User queryById(Long id){ return this.userMapper.selectByPrimaryKey(id); } @Transactional public void deletById(Long id){ this.userMapper.deleteByPrimaryKey(id); } }
整合连接池:(HikariCp速度较快的连接池)
# 连接四大参数(需要指定的参数) spring.datasource.url=jdbc:mysql://localhost:3306/heima spring.datasource.username=root spring.datasource.password=123 # 可省略,SpringBoot自动推断 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.hikari.idle-timeout=60000 spring.datasource.hikari.maximum-pool-size=30 spring.datasource.hikari.minimum-idle=10
整合mybatis:
# mybatis 别名扫描 mybatis.type-aliases-package=com.lepin.pojo # mapper.xml文件位置,如果没有映射文件,请注释掉 mybatis.mapper-locations=classpath:mappers/*.xml @Mapper public interface UserMapper { } org.mybatis.spring.boot mybatis-spring-boot-starter1.3.2 @Mapper public interface UserMapper extends tk.mybatis.mapper.common.Mapper tk.mybatis mapper-spring-boot-starter2.0.2 { }
通用mapper:
@Mapper public interface UserMapper extends tk.mybatis.mapper.common.Mapper{ }
总结
提示:这里对文章进行总结:
你引入了相关依赖和自己没有配置,SpringBoot会生效默认配置
1)直接引入SpringBoot提供的starter(启动器),便会自动管理依赖集版本
2)全局配置:通过application.properties来覆盖默认属性值,形成自定义配置。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)