zoukankan      html  css  js  c++  java
  • springboot成神之——springboot入门使用

    springboot创建webservice访问mysql(使用maven)

    安装

    使用maven,在你的pom.xml中添加如下配置
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>2.0.4.RELEASE</version>
    </parent>
    
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-devtools</artifactId>
    	<optional>true</optional>
    </dependency>
    
    <plugin>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    
    maven package 测试是否安装成功
    mvn dependency:tree 查看你的安装依赖
    

    起步

    src/main/java 下面添加一个类,假如如下代码
    
    import org.springframework.boot.*;
    import org.springframework.boot.autoconfigure.*;
    import org.springframework.web.bind.annotation.*;
    
    @SpringBootApplication                                                          // 声明主程序类
    @RestController                                                                 // 声明我们的类是一个web容器
    @EnableAutoConfiguration                                                        // 自动配置spring
    public class first {
    	@RequestMapping("/")                                                        // 监听("/")路由,返回字符串
    	String home() {
    		return "Hello World!";
    	}
    	public static void main(String[] args) {
    		SpringApplication.run(first.class, args);                               // 开启tomcat服务器,运行程序
    
    	}
    }
    
    如果端口冲突,可以配置tomcat的端口
    在src/main/resources/
    创建文件application.properties
    加入 server.port=8888
    
    # application.properties文件的格式
    application.name=@project.name@
    application.version=@project.version@
    
    1. maven运行spring 
        运行 mvn spring-boot:run
    2. 打包成可执行文件执行
        运行 mvn package 打包war文件
        运行 jar tvf FirstMaven-0.0.1-SNAPSHOT.war 查看war包里面的内容
        运行 java -jar FirstMaven-0.0.1-SNAPSHOT.war 运行可执行文件
        访问 http://localhost:8888/#/
    

    spring常用命令

    mvn dependency:tree                                                 查看依赖
    mvn spring-boot:run                                                 运行程序
    mvn package                                                         打包程序
    jar tvf myproject-0.0.1-SNAPSHOT.jar                                查看jar包内部信息
    java -jar myproject-0.0.1-SNAPSHOT.jar                              运行你的jar包
    

    spring常见注释

    @RestController                                                     声明是一个控制器和@Controller等效,用来处理网络请求
    @RequestMapping                                                     声明请求的路径
    @Autowired                                                          自动注入,你可以使用构造器注入来代替@Autowired,如下
        public class DatabaseAccountService implements AccountService {
            private final RiskAssessor riskAssessor;
            public DatabaseAccountService(RiskAssessor riskAssessor) {
                this.riskAssessor = riskAssessor;
            }
        }
        public class DatabaseAccountService implements AccountService {
            @Autowired 
            RiskAssessor riskAssessor;
        }
        上面两者等价
    @SpringBootApplication                                              等价于开启@EnableAutoConfiguration,@ComponentScan,@Configuration
    @EnableAutoConfiguration                                            开启spring默认依赖配置
    @ComponentScan                                                      如果这个添加入口文件,那么可以扫描到@Component, @Service, @Repository, @Controller声明的文件,并且自动注册成bean
    @Configuration                                                      允许配置其他的bean和使用@Import导入其他配置类
    @Import                                                             导入其他配置类@Import({ MyConfig.class, MyAnotherConfig.class })
    

    springboot入门级使用

    配置你的pom.xml文件

    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
    </parent>
      
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <java.version>1.8</java.version>
    </properties>
    
    <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>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
        
    <plugin>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <jvmArguments>
                -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
            </jvmArguments>
    	</configuration>
    </plugin>
    

    配置文件

    application.properties
        spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true
        spring.datasource.username=root
        spring.datasource.password=123
        spring.datasource.driver-class-name=com.mysql.jdbc.Driver
        spring.datasource.max-idle=10
        spring.datasource.max-wait=1000
        spring.datasource.min-idle=5
        spring.datasource.initial-size=5
        server.port=8888
        server.session.timeout=10
        server.tomcat.uri-encoding=UTF-8
    

    创建所需测试类

    Greeting.java
        public class Greeting {
    
            private final long id;
            private final String content;
    
            public Greeting(long id, String content) {
                this.id = id;
                this.content = content;
            }
    
            public long getId() {
                return id;
            }
    
            public String getContent() {
                return content;
            }
        }
    
    GreetingController.java
    
        import java.util.HashMap;
        import java.util.List;
        import java.util.Map;
        import java.util.concurrent.atomic.AtomicLong;
    
        import javax.security.auth.message.callback.PrivateKeyCallback.Request;
    
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.jdbc.core.JdbcTemplate;
        import org.springframework.web.bind.annotation.CrossOrigin;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RequestMethod;
        import org.springframework.web.bind.annotation.RequestParam;
        import org.springframework.web.bind.annotation.RestController;
    
        @RestController // 标记控制器返回一个域对象                                                                              
        public class GreetingController {
            @Autowired
            private JdbcTemplate jdbcTemplate;
    
            private static final String template = "Hello, %s!";
            private final AtomicLong counter = new AtomicLong();
    
    
            @CrossOrigin(origins = "http://localhost:8080") // 跨域设置
            @RequestMapping("/greeting") // 绑定路由,支持get,post,put,限定路由方式的写法@RequestMapping(method=RequestMethod.GET,value="/greeting")
            public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
                return new Greeting(counter.incrementAndGet(), String.format(template, name));
            }
            
            @CrossOrigin(origins = "http://localhost:8080") 
            @RequestMapping(method=RequestMethod.GET,value="/mytest") 
            public List<Map<String, Object>>  mytest(@RequestParam(value="name", defaultValue="小红") String name) { // @RequestBody Map<String,Object> params
                String sql = "select * from test WHERE name=?;";
                List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, name);
                return result;
            }
        }
    first.java
        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
    
        @SpringBootApplication
        public class first {
            public static void main(String[] args) {
                SpringApplication.run(first.class, args);
            }
        }
    

    测试页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
        <script>
            // axios.get('http://localhost:8888/greeting').then(function (response) {
            //     console.log(response);
            // }).catch(function (error) {
            //     console.log(error);
            // }).then(function () {
            // });
    
            // axios.get('http://localhost:8888/greeting', {
            //     params: {
            //         name: 'User'
            //     }
            // }).then(function (response) {
            //     console.log(response);
            // }).catch(function (error) {
            //     console.log(error);
            // }).then(function () {
            // });
    
            axios.post('http://localhost:8888/greeting').then(function (response) {
                console.log(response);
            }).catch(function (error) {
                console.log(error);
            }).then(function () {
            });
    
            axios.post('http://localhost:8888/greeting', {
                name: 'User'
            }).then(function (response) {
                console.log(response);
            }).catch(function (error) {
                console.log(error);
            }).then(function () {
            });
        </script>
    </head>
    <body>
        
    </body>
    </html>
    

    绑定路由的其他方式

    @GetMapping("/employees")
    @GetMapping("/employees/{id}")
    
    @PostMapping("/employees")
    
    @PutMapping("/employees/{id}")
    @DeleteMapping("/employees/{id}")
    
    
  • 相关阅读:
    记第一场省选
    POJ 2083 Fractal 分形
    CodeForces 605A Sorting Railway Cars 思维
    FZU 1896 神奇的魔法数 dp
    FZU 1893 内存管理 模拟
    FZU 1894 志愿者选拔 单调队列
    FZU 1920 Left Mouse Button 简单搜索
    FZU 2086 餐厅点餐
    poj 2299 Ultra-QuickSort 逆序对模版题
    COMP9313 week4a MapReduce
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/9592890.html
Copyright © 2011-2022 走看看