SpringBoot开整

SpringBoot开整,第1张

SpringBoot开整 SpringBoot介绍

文章目录

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连接池依赖:


	com.alibaba
	druid
	1.1.6

2.SpringBoot属性注入

代码如下(示例):

方案一:

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:root

3.自动配置原理


图中出现了两个东西值得我们注意:
注解:@SpringBootApplication
run方法:SpringApplication.run()

首先分析注解:

最后的三个需要重点注意
@SpringBootConfiguration:源码内又出现一个@Configuration注解。通过注释阅读,这个注解的作用就是声明当前类的一个配置类,然后Spring会自动扫描到添加了@Configuration的类,并且读取其中的配置信息。而@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。

@EnableAutoConfiguration:SpringBoot内部对大量的第三方库或Spring内部进行了默认配置,这些配置是否生效,取决于我们是否引入了对应库(如:spring-boot-starter-web)所需的依赖,如果有那么默认配置就会生效。使用SpringBoot构建一个项目,只需要引入所需框架依赖。

@ComponentScan:启动类会放在一个比较前的包目录中

4.SpringBoot实 ***

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=debug
5.整合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:



    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    1.3.2



# mybatis 别名扫描
mybatis.type-aliases-package=com.lepin.pojo
# mapper.xml文件位置,如果没有映射文件,请注释掉
mybatis.mapper-locations=classpath:mappers/*.xml

@Mapper
public interface UserMapper {
}



    tk.mybatis
    mapper-spring-boot-starter
    2.0.2


@Mapper
public interface UserMapper extends tk.mybatis.mapper.common.Mapper{
}

通用mapper:

@Mapper
public interface UserMapper extends tk.mybatis.mapper.common.Mapper{
}

总结

提示:这里对文章进行总结:
你引入了相关依赖和自己没有配置,SpringBoot会生效默认配置
1)直接引入SpringBoot提供的starter(启动器),便会自动管理依赖集版本
2)全局配置:通过application.properties来覆盖默认属性值,形成自定义配置。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5708259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存