SpringBoot

SpringBoot使用

1.引入标签约定版本

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

2.引入依赖(想要开发web场景)

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

3.创建主程序

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
         SpringApplication.run(Application.class,args);
    }
}

4.创建Controller

//@RestController等价于写@ResponseBody  @Controller
@RestController
public class HelloController {
    
    @RequestMapping("/hello")
    public String hello(){
        return "hello,SpringBoot!";
    }
}

5.运行主程序

访问http://localhost:8080/hello,页面显示hello,SpringBoot!

Spring配置文件application.properties

可以配置的所有内容官网地址:https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties

简化部署

1.添加如下插件

	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.0.RELEASE</version>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.按照下图部署

在这里插入图片描述

控制仲裁版本

从pom.xml文件中找到spring-boot-starter-parent点击进入,找到spring-boot-dependencies点击进入,查看想要用的软件的版本号是否符合,不符合将标签复制到pom.xml文件,更改版本号

<properties>
    <mysql.version>5.1.45</mysql.version>
</properties>

各种启动器

  1. spring-boot-starter-* : *代表各种场景

  2. 只要引入starter,这个场景的所有需要的依赖会自动引入

  3. 官网地址:https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter

  4. 第三方场景启动器:thirdpartyproject-spring-boot-starter

  5. 所有场景启动器最底层的依赖

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.0.0.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    

扫描规则

  1. 主程序及子包下自动扫描
  2. 利用scanBasePackages属性更改扫描范围
@SpringBootApplication(scanBasePackages = "com.hsp")
public class Application {
    public static void main(String[] args) {
         SpringApplication.run(Application.class,args);
    }
}
  1. 使用@ComponentScan(“com”)指定扫描路径
//@SpringBootApplication等同于@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan("com.hsp")
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.hsp")
public class Application {
    public static void main(String[] args) {
         SpringApplication.run(Application.class,args);
    }
}

加载到容器

  1. 利用@Configuration告诉SpringBoot这是一个配置类

    @Configuration
    public class MyConfig {}
    
  2. 使用@Bean,默认以方法名作为组件id,返回类型就是组件类型,返回的值就是容器中的实例

    @Configuration
    public class MyConfig {
        //@Bean("自定义名称"),默认是单实例的
        @Bean
        public User user(){
            return new User("zhangsan",22);
        }
    }
    
  3. @Import({User,Student}),默认名称为全类名

    @Import({User,Student})
    @Configuration
    public class MyConfig {
        @Bean
        public User user(){
            return new User("zhangsan",22);
        }
    }
    

    4.@Conditional条件注入,符合某种条件后添加组件

属性读取

1.通过@ConfigurationProperties(prefix = “”)直接读取

@Configuration
public class jdbcConfig {


    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource source(){
    	//SpringBoot会匹配前缀,自动注入DataSource属性
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }

}

2.通过配置类读取

2.1配置类

@ConfigurationProperties(prefix = "jdbc")
public class jdbcProperties {
    private String url;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}

2.2读取

@Configuration
@EnableConfigurationProperties(jdbcProperties.class)
public class jdbcConfig {


    @Bean
    public DataSource source(@Autowired jdbcProperties jdbc){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(jdbc.getUrl());
        return dataSource;
    }

}

拦截器

1.写拦截器类

public class LoginInterceptor implements HandlerInterceptor {
    private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        logger.debug("处理器执行前执行!");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
        logger.debug("处理器执行后执行!");
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        logger.debug("跳转后执行!");
    }
}

2.通过实现WebMvcConfigurer,实现拦截器

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    @Bean
    public LoginInterceptor loginInterceptor() {
        return new LoginInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/**");
    }
}

整合jdbc

1.引入依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.37</version>
    </dependency>
</dependencies>

2.配置application.properties参数

# 连接四大参数
spring.datasource.url=jdbc:mysql://localhost:3306/mytest
spring.datasource.username=root
spring.datasource.password=root
# 可省略,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

3.写数据库对应bean类

4.写dao层去调用

@Repository
public class jdbcdao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<User> findAll(){
        //new BeanPropertyRowMapper<>(User.class)可以把同名字段赋值给属性
        return jdbcTemplate.query("select * from tb_user",new BeanPropertyRowMapper<>(User.class));
    }
}

5.测试方法

@RunWith(SpringRunner.class)
@SpringBootTest
public class jdbcdaoTest extends TestCase {

    @Autowired
    private jdbcdao jdbcDao;
    @Test
    public void testFindAll() {
        jdbcDao.findAll().forEach((user -> {
            System.out.println(user);
        }));
    }
}

整合Mybaits

1.引入依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <!--非官方,所以需要写版本-->
    <version>1.3.2</version>
</dependency>

2.配置application.properties参数

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

3.写dao层接口

//可改为主程序上写@MapperScan("com.hsp.dao")
@Mapper
public interface UserDao {
    public List<User> findAll();
}

4.写mapper文件

<?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.hsp.dao.UserDao">
    <select id="findAll" resultType="com.hsp.bean.User">
        select * from tb_user
    </select>
</mapper>

5.测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserDaoTest {

    @Autowired
    private UserDao dao;

    @Test
    public void findAll() {
        List<User> all = dao.findAll();
        for (User user : all) {
            System.out.println(user);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值