SpringBoot2.0学习 (一)

SpringBoot是什么?

SpringBoot是由Pivotal团队提供的全新框架 ,它使用特定的方式进行配置(大多数为自动配置),省去了Spring繁琐的xml配置,内置了http服务器,可以通过java程序启动web容器,也整合了常用的框架。总之,SpringBoot帮助程序员进行快速开发和构建项目。

SpringBoot和SpringMvc

在使用SpringBoot构建web项目时,我们需要引入spring-starter-web模块,实际上这个模块会帮我们引入SpringMvc,由此可见,SpringBoot并不是一个全新的web框架,它只是帮助我们将一些框架整合起来,在构建web项目时,底层还是使用的SpringMvc。

SpringBoot和SpringCloud

SpringCloud是一套微服务框架,它基于SpringBoot开发,简化了分布式系统的基础设施的开发,比如配置中心、负载均衡、路由、服务治理等,简单的说SpringCloud依赖SpringBoot

SpringBoot中几个常用的注解

@Configuration   

作用在类上,底层使用的@Component注解,和xml中的<bean>标签功能类似,Spring容器启动时会加载这个类,可以用作配置。

@EnabledAutoConfiguration

作用在类上,会自动加载jar包里的META-INF/spring-autoconfigure-metadata.properties配置的类(自动配置)

@ComponentScan

开启注解扫描,如果不指定范围,默认扫描当前类所在包范围

@SpringBootApplication

相当于@Configuration、@EnabledAutoConfiguration、@ComponentScan三个注解,通常为项目的入口

扫描二维码关注公众号,回复: 3375669 查看本文章

SpringBoot中的配置文件

SpringBoot可以使用.yml(或者.yaml)和.properties作为配置文件,我们一般使用.yml,因为它结构清晰,更方便阅读

** Springboot提供了两种配置文件的格式:application.properties和application.yml,
   因为.yml文件编写和结构更加清晰,所以我们应该尽量使用application.yml作为配置文件

1.配置server(端口、项目访问路径等信息)
	server:
	  port: 8081
	  context-path: /girl
  
2.配置spring整合外部框架和应用的信息,如datasource、redis、thymeleaf等
	spring:
	  datasource:
		driver-class-name: com.mysql.jdbc.Driver
		url: jdbc:mysql://127.0.0.1:3306/girl
		username: root
		password: 444668
	
3.配置自定义信息:
	(1) 普通信息:在程序中如果需要引用这些参数,使用@Value("${参数名}")注解
		name: eragon
		age: 23
	(2) 封装成对象: 在程序中如果需要引用到这个对象,那么需要写一个POJO类,并使用@ConfigurationProperties(prefix="该对象的名称")和@Component注解,通过@Autowire引用
		gril:
			name: eragon
			age:23
	(3) 引用配置文件中的参数
		name: eragon
		age: 23
		content: ${name},${age}
		
4. 配置profiles:在开发中,我们由于开发环境和生产环境的不同,经常要进行配置文件的切换,比如数据库等信息的配置,会非常的麻烦。通过配置profiles可以实现非常方便的环境
				 切换。spriingboot中默认采用application-{profileName}.yml来适用于不同环境的配置文件。通过在application.yml主配置文件中使用如下配置:
	
	profiles:
		active: dev   // 这里的dev指向的是application-dev.yml
	
5. 配置随机值:通过${random}可以生成不同类型的随机值:
	age: ${random.int}
	name: ${random.value}

6. 配置日志:
	debug: ture   // debug级别的日志也会被打印到控制台
	logging:
	path: c:/upload/   // 指定日志输出目录,会自动生成spring.log文件记录日志
	file: c:/upload/my.log  // 自定义日志输出路径,需要注意的是path和file如果同时使用,只有file会生效
	level:
		com.eragon: warn  // 表时com.eragon包下的所有类以warn级别输出日志
	另外还可以引入外部配置文件,比如使用logback时,以下规则的配置文件都会被加载:logback-spring.xml、logback-spring.groovy、logback.xml、logback.groovy
	也可以自定义外部配置文件:
	config: classpath:myLogback.xml

SpringBoot中的静态资源访问

classpath:/META-INF/resources
           classpath:/resources
           classpath:/static
           classpath:/public
  上面4个目录都是SpringBoot的静态资源映射路径,优先级顺序为:META-INF/resources > resources > static > public
  对应在application.yml中的默认配置为:
  spring:
    mvc:
        static-path-pattern: ##默认值为 /**
    resources:
        static-locations:    ##默认值为classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
  这两个配置相当于nginx的配置,可以通过修改上面两个属性来配置自定义的静态资源路径映射。

SpringBoot整合Freemarker模板

在pom中添加Freemarker的依赖后就可以在项目中使用Freemarker了

          

        

SpringBoot全局捕获异常

在项目中我们的程序中肯定会出现异常,直接将异常返回给前台展示对用户非常的不友好,所以我们需要异常进行捕获,用JSON或者其他格式返回给页面。SpringBoot可以通过@ControllerAdvice注解来配置一个全局异常处理类,它可以且只能处理Controller中抛出的异常,不能处理其他如service层抛出的异常。

    

SpringBoot中使用Lombok简化代码

在项目中我们经常要在JavaBean类中写getter、setter、toString等方法,每添加一个属性都需要改写,非常不方便。Lombok通过改变字节码文件(使用javac技术),让我们只用几个注解就可以简单方便的创建JavaBean。在IDEA中需要先下载Lombok插件。

           

           

可以使用@Getter、@Setter等注解自动拥有getter方法和setter方法,也可以直接使用@Data等于@Getter、@Setter、@ToString等。另外我们可以在@Slf4j注解,用来简化日志的输出。

           

SpringBoot中异步执行方法

如果要在controller中使用异步方法,一般会使用java多线程技术,new一个Thread去执行,在SpringBoot中我们可以使用@Async注解达到同样的效果。

 @Async
    public String sendEmail() {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "success";
    }

另外还需要在controller类中使用@EnableAsync开启异步方法扫描

@EnableAsync
@RestController
public class AsyncController {
    @Autowired
    private IEmailService emailService;
    @RequestMapping("test/async")
    public String testAsync(){
        // 这个方法将会被异步执行
        emailService.sendEmail();
        return "";
    }
}

猜你喜欢

转载自blog.csdn.net/eragon444668/article/details/82824129