Spring Boot-开发基础1

目录

spring的Java配置(注解)

SpringBoot的属性注入

默认配置原理

Spring Boot实战

整合JDBC和事务

整合连接池

整合mybatis

Thymeleaf


生产级别的spring应用,搭建程序的脚手架,内置tomcat,推崇约定大于配置

java-jar启动

存放默认配置的包是启动器

自己设置参数:.properties 

  • 创建项目,在maven中添加
 <parent>
        <!--父工程-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

    }
}
@RestController
@RequestMapping
public class HelloController {
//    @RequestMapping(value = "hello", method = RequestMethod.GET)
    @GetMapping("hello")
    public String hello(){
        return "Hello World!!!!!!!!!!!!!!";
    }
}

spring的Java配置(注解)

  • @Configuration:声明类作为配置类,代替xml文件
  • @Bean:声明在方法上,将方法的返回值加入Bean容器里,代替<bean>
  • @value:属性注入
  • @PropertySource:指定外部属性文件

Druid是Java语言中数据库连接池。Druid能够提供强大的监控和扩展功能。

@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
    @Value("${jdbc.driverClassName}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

SpringBoot的属性注入

@ConfigurationProperties

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig2 {
    @Bean
    public DataSource dataSource(JdbcProperties prop){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(prop.getDriverClassName());
        dataSource.setUrl(prop.getUrl());
        dataSource.setUsername(prop.getUsername());
        dataSource.setPassword(prop.getPassword());
        return dataSource;
    }
}

新建一个类,用来进行属性注入 

@ConfigurationProperties(prefix = "jdbc")//读取属性文件中前缀为jdbc
@PropertySource("classpath:jdbc.properties")// 引用文件
public class JdbcProperties {
    private String driverClassName;
    private String url;
    private String username;
    private String password;
//省略get/set方法
}

松散绑定

  • @AutoWired注入
  • 构造函数注入
  • 声明@Bean的方法参数注入

@SpringBootConfiguration

@EnableAutoConfiguration

@ ComponentScan

默认配置原理

引入相关依赖,自己没有配置

启动器(stater),全局配置:自定义application.properties文件来进行覆盖

Spring Boot实战

修改端口:server.port=80

访问静态资源

在resource文件夹下创建一个static文件夹放置静态资源,默认的静态资源路径是:

  • classpath:/META-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public

添加拦截器

自定义MVC配置(拦截器、格式化器、视图控制器、消息转换器、错误处理器)

自定义MvcConfig类实现WebMvcConfigurer接口,,添加@Configuration注解,不要加@EnableWebMvc,自定义HandleMapping、HandleAdapter、ExceptionResovler等组件,创建WebMvcRegistrationAdapter实例

 @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        方法一
        //拦截器的注册器
        registry.addInterceptor(new HandlerInterceptor() {
            //添加日志
            private final Logger logger = LoggerFactory.getLogger(this.getClass());
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
                //前置
                logger.info("preHandle is running");
                return true;
            }

            @Override
            public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
                //后置
                logger.info("postHandle is running");

            }

            @Override
            public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
                //最终方法
                logger.info("afterCompletion is running");
            }
        }).addPathPatterns("/**");
    }

方法二

使用java配置方法

 @Bean
    public LoginInterceptor loginInterceptor(){
        //由spring管理,注册Bean
        LoginInterceptor loginInterceptor = new LoginInterceptor();
        return loginInterceptor;
    }


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

调整日志级别

在application.properties文件中添加如下代码:

#日志
logging.level.edu.qut = debug
logging.level.org.springframework=debug

整合JDBC和事务

添加启动器和mysql数据库驱动

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

通过@Transactional注解,管理事务

整合连接池

HikariCP是最快的连接池,c3p0、Druid、DBCP

在resources文件夹下添加application.yml,YAML类似于标准通用标记语言的子集XML数据描述语言,语法比XML简单很多

spring:
  datasource:
#  可省略,SpringBoot自动推断
#    driver-class-name:
    url: jdbc:mysql://localhost:3306/test
    username: 
    password: 
#    hikari:
#      idle-timeout: 6000
#      maximum-pool-size: 30
#      minimum-idle: 10

整合mybatis

mybatis官网提供的启动器

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

在Application.java文件添加@MapperScan("edu.qut.mapper"),在application.yml中添加

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

没有配置mapper接口扫描包,需给每个Mapper接口添加@Mapper注解,才能识别

通用Mapper

        <!--通用Mapper-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.2</version>
        </dependency>

无需任何配置就可使用,@Mapper

Thymeleaf

模板引擎技术:Mustache、freemarker、Thymeleaf等,可完全代替jsp

特点:

  • 动静结合
  • 开箱即用
  • 多方言支持
  • 与springboot完美结合

编写接口

引入启动器

        <!--模板引擎-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
 @GetMapping("/all")
    public String all(Model model){
        //查询用户
        List<User> userList = this.userService.queryAll();
        //放入模型
        model.addAttribute("users",userList);
        //返回模板名称(就是classpath:/templates目录下的html文件
        return "users";
    }

在templates文件夹下创建一个users.html文件

语法:

  • ${}:类似el表达式
  • th-:利用h5自定义属性实现,不支持h5时用data-th-
    • th:each:类似c:foreach遍历
    • th:text:声明标签中的文本​​​​​​​​​​​​​​

猜你喜欢

转载自blog.csdn.net/xuxuan1997/article/details/82822682