spring boot学习笔记一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot学习笔记一相关的知识,希望对你有一定的参考价值。

    一直以来用java做web开发总是需要解决各种依赖和配置很是烦人spring boot在这方面做的很好。用maven管理项目只需要简单的引入几个包就可以做web开发。下面是一个例子

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zns</groupId>
    <artifactId>restful</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Restful</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

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

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

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

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

        <dependency>
            <groupId>com.googlecode.xmemcached</groupId>
            <artifactId>xmemcached</artifactId>
            <version>2.0.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

这个pom.xml的配置spring boot的文档讲的很详细。这里先不说了。

    说说我是怎么一步一步的开始开发的。spring boot虽然说配置简单但总还是需要配置。在src/main/resources/application.properties里面写我们的项目配置。我这里只有简单的几行。

server.port=8080 #配置端口
server.tomcat.uri-encoding=UTF-8 #配置字符编码

#数据连接的配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/shiro??useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root

#mybatis集成
mybatis.config-location=classpath:mybatis/mybatis-config.xml  #mybatis配置文件这里我只配置了一些别名
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml #mapper文件
mybatis.type-aliases-package=com.zns.model #Dao包路径。在mapper里面resultclass就可以简写类名了。

#日志的配置
logging.level.root=warn
logging.level.org.springframework.web=info
logging.level.org.mybatis=debug
logging.level.com.zns.domain=debug #这里我是配置的mapper接口的路径可以在日志中打印sql语句。
logging.file=spring.log #spring boot默认只在控制台显示日志。如果需要保存文件需要我们自定义日志文件名。

这里日志我没有指定保存路径根据官网文档所写这样是被允许的。不指定日志的保存路径默认就是保存在项目的当前路径也就是项目的根路径。更多配置我现在没有研究以后如果线上项目有机会用到spring boot我肯定还是希望日志能够按天来保存这样排查问题更方便。有细心的朋友可能会发现我的pom.xml里并没有引入log4j或其它日志包。这就是spring boot的好处不需要自己引包。

    第一次用这个spring boot的时候觉得很奇怪没有index.jsp入口在哪到是有个main方法的java。这里是整个web项目的入口吗

   

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {    
    @RequestMapping("/")
    String home() {        
        return "Hello World!";
    }    
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }

}

这是官方文档里的例子,当时我一看傻了。不可能每个Controller都要写一个main方法吧。直接google吧。

package com.zns;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.zns.domain")
public class RestfulApplication {

    public static void main(String[] args) {

        SpringApplication.run(RestfulApplication.class, args);

    }
}

原来这里就可以了。官方文档解释,@SpringBootApplication注释相当于使用@Configuration,@EnableAutoConfiguration和@ComponentScan及其默认属性。

所以在你写的Controller里面只需要引用@RestController或者是@Controller注解就行了。

这里@MapperScan是专门扫描mapper接口的。bean也不需要定义了。在需要用到的地方直接用

@Autowired注解就可以了。

    写下笔记是怕自己忘记了。欢迎大家来讨论,也希望大牛指出我的错误。

本文出自 “coding” 博客,请务必保留此出处http://xtceetg.blog.51cto.com/5086648/1939506

以上是关于spring boot学习笔记一的主要内容,如果未能解决你的问题,请参考以下文章

基于Promise对象的新一代Ajax API--fetch

IMX6ULL学习笔记——通过SD卡启动Linux内核

IMX6ULL学习笔记——通过SD卡启动Linux内核

IMX6ULL学习笔记——通过SD卡启动Linux内核

Fetch:新一代Ajax API

学习笔记:python3,代码片段(2017)