zoukankan      html  css  js  c++  java
  • springBoot学习笔记

    1.springBoot的概念:

      Spring Boot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目。它使用习惯优于配置的理念让你的项目快速运行起来,使用Spring Boot很容易创建一个独立运行(运行jar,内置Servlet容器,Tomcat、jetty)、Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使我们开发人员不再需要定义样板化的配置。

    2.springBoot核心功能

    • 独立运行的Spring项目:可以以jar包形式独立运行,通过java -jar xx.jar即可运行
    • 内嵌Servlet容器:可以选择内嵌Tomcat、Jetty等
    • 提供starter简化maven配置:一个maven项目,使用了spring-boot-starter-web时,会自动加载Spring Boot的依赖包
    • 自动配置Spring:Spring Boot会根据在类路径中的jar包、类,为jar包中的类自动配置Bean
    • 准生产的应用监控:提供基于http、ssh、telnet对运行时的项目进行监控
    • 无代码生成和xml配置:主要通过条件注解来实现。
    3.springBoot项目搭建
     
    1)配置web.xml,加载spring和spring mvc
     
    2)配置数据库连接、配置spring事务
     
    3)配置加载配置文件的读取,开启注解
     
    4)配置日志文件
     
    本次学习使用Maven构建项目:
    1.借助网站工具生成springBoot框架,访问http://start.spring.io/
    2.具体步骤:选择构建工具Maven Project、Spring Boot版本1.3.6以及一些工程基本信息,点击“Switch to the full version”设置好jdk为1.8
    3.点击Generate Project下载项目压缩包。
    4.解压后放在工作空间,使用eclipse,Import -> Existing Maven Projects -> Next ->选择解压后的文件夹-> Finsh即可导入项目。
    注意:Spring Boot的基础结构共三个文件:
    l src/main/java  程序开发以及主程序入口
    l src/main/resources 配置文件
    l src/test/java  测试程序
    建议的目录结构:
    root package结构:com.example.myproject
    1、Application.java 建议放到跟目录下面,主要用于做一些框架配置
    2、domain目录主要用于实体(Entity)与数据访问层(Repository)
    3、service 层主要是业务类代码
    4、controller 负责页面访问控制
     
    接下来需要引入web模块
    1、pom.xml中添加支持web的模块的指纹:
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    pom.xml文件中默认有两个模块:
    spring-boot-starter:核心模块,包括自动配置支持、日志和YAML;
    spring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockito。
    2、编写controller内容
    @RestController
    public class HelloWorldController {
        @RequestMapping("/hello")
        public String index() {
            return "Hello World";
        }
    }
    注意:@RestController的意思就是controller里面的方法都以json格式输出。
    3、启动主程序,打开浏览器访问http://127.0.0.1:8080/hello,就可以看到执行的结果
     
    开发环境的调试
    springBoot对调试支持很好,修改之后可以实时生效,需要添加以下的配置:
    <dependencies>
       <dependency>
             <groupId>org.springframework.boot</groupId>
     
            <artifactId>spring-boot-devtools</artifactId>
     
            <optional>true</optional>
     
       </dependency>
     
    </dependencies>
     
    <build>
     
        <plugins>
     
            <plugin>
     
                <groupId>org.springframework.boot</groupId>
     
                <artifactId>spring-boot-maven-plugin</artifactId>
     
                <configuration>
     
                    <fork>true</fork>
     
                </configuration>
     
            </plugin>
     
       </plugins>
     
    </build>
    4.springBoot常用到的注解
     
    1.@RestController
    @RestController被称为一个构造型(stereotype)注解。它为阅读代码的开发人员提供建议。对于Spring,该类扮演了一个特殊角色。它继承自@Controller注解。4.0之前的版本,spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet。使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的
     
    2.@RequestMapping
    注解提供路由信息。它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到home方法。@RestController注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。该注解有六个属性:
    params:指定request中必须包含某些参数值是,才让该方法处理。
     
    headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
     
    value:指定请求的实际地址,指定的地址可以是URI Template 模式
     
    method:指定请求的method类型, GET、POST、PUT、DELETE等
     
    consumes:指定处理请求的提交内容类型(Content-Type),如application/json,text/html等。
     
    produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
     
    @EnableAutoConfiguration
    @EnableAutoConfiguration。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定正在开发一个web应用并相应地对Spring进行设置。Starter POMs和Auto-Configuration设计auto-configuration的目的是更好的使用"Starter POMs",但这两个概念没有直接的联系。可以自由地挑选starter POMs以外的jar依赖,并且Spring Boot将仍旧尽最大努力去自动配置你的应用
     
    @Configuration
    Spring Boot提倡基于Java的配置。尽管可以使用一个XML源来调用SpringApplication.run(),但官方建议使用@Configuration类作为主要源。一般定义main方法的类也是主要@Configuration的一个很好候选。不需要将所有的@Configuration放进一个单独的类。@Import注解可以用来导入其他配置类。另外也可以使用@ComponentScan注解自动收集所有的Spring组件,包括@Configuration类。
    如果需要使用基于XML的配置,官方建议仍旧从一个@Configuration类开始。可以使用附加的@ImportResource注解加载XML配置文件。
     
    @ComponentScan
    表示将该类自动发现扫描组件。如果扫描到有@Component、@Controller、@Service等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。可以自动收集所有的Spring组件,包括@Configuration类。如果没有配置,Spring Boot会扫描启动类所在包下以及子包下的使用了@Service,@Repository等注解的类。
     
    @SpringBootApplication
    @SpringBootApplication // 等同于@Configuration @EnableAutoConfiguration @ComponentScan
    @Profiles
     
    Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。
     
    @value
     
    通过@value注解来读取application.properties里面的配置,使用实例参考:
     
    /************** application.properties *************/
     
    qq_api_key=********1***********
     
    qq_api_secrt=******2***********
     
     
    /************* Java **************/
     
    @Value("${qq_api_key}")
     
    private String API_KEY;
     
    @Value("${qq_api_secrt}")
     
    private String API_SECRET;
     
     
    @ResponseBody***
    表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。如异步获取json数据,加上@Responsebody后,会直接返回json数据。
     
    @RequestParam
    用在方法的参数前面,实例:
    @RequestParam String a=request.getParameter("a");
    @PathVariable
     
    路径变量注解,其参数与大括号里的名字一样要保持一致,实例:
     
    RequestMapping("yoodb/detail/{id}")
     
    public String getByMacAddress(@PathVariable String id){
     
    }
     
    @AutoWired
    自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。
     
    @Qualifier
    当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,具体使用方式如下:
  • 相关阅读:
    实战(三):对游戏的破解“木叶忍者”
    实战(一):对“钉钉”的逆向(实现打卡功能)
    实战(二):对“微信”的逆向(实现界面自定义)
    iOS签名机制
    AM64汇编
    动态调试(二)
    动态调试(一)
    theos(二)
    murmurhash
    虚继承
  • 原文地址:https://www.cnblogs.com/zylong1220/p/11833273.html
Copyright © 2011-2022 走看看