栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

蔡徐坤哈哈哈

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蔡徐坤哈哈哈

springboot笔记 1,特性:
  • 去除xml配置
  • 全部使用注解开发
  • 内嵌入tomcat
  • 快速开发
2,创建项目
  • 创建maven项目

  • 引入依赖

    
            spring-boot-starter-parent
            org.springframework.boot
            2.6.7
        
    
        
        
            
                org.springframework.boot
                spring-boot-starter-web
            
        
    
    
    
    
  • 引入这些依赖后就相当于引入了spring,springMVC,Tomcat等依赖

3,项目结构
  • controller:视图层(web页面即跳转)和接口(业务逻辑)
  • service:接口层(业务逻辑)
  • dao:数据库访问层
4,RestController注解
  • RestController注解规定了该类所有的URL映射都是返回JSON格式,由springMVC提供,协议为Http协议
  • 和Controller的区别:如果使用Controller注解,那么该类如果想返回JSON格式的数据,需要再加上@ResponseBody注解,使用@RestController则不需要这一句冗余的代码,如果不加@ResponseBody,那么controller注解的类的方法返回值会默认跳转到另一个页面,即返回一个视图路由信息
  • @ResponseBody:将数据传输类型变为JSON类型
5,启动方式
  • 给任意类加上@EnableAutoConfigration注解,然后添加main方法,main方法代码:

    public static void main(String[] args) {
            SpringApplication.run(HelloWorld.class, args);
        //两个参数,启动类的class和参数
        }
    //这种做法只能扫描到当前类的路由信息可以在类上添加@ComponentScan()注解,在参数中添加扫描的包路径即可
    
    
    
    //@EnableAutoConfiguration//启动类注解
    //@ComponentScan("com.springboot.service")//解析路由时扫描包的注解
    
  • 创建启动类,为启动类添加@SpringbootApplication注解,这个注解包含了@EnableAutoConfiguration和@ComponentScan注解,并且扫描包时在从同级目录开始寻找。代码:

    @SpringBootApplication
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class);
        }
    }
    
6,静态资源访问
  • 在项目中,图片,js代码,css代码常作为静态资源,使用时引入即可,这种资源放置方式为在resource目录下新建static目录,放置到static目录下即可通过ip:端口号/文件名 来访问: http://localhost:8080/img.png
7,配置文件

​ 两种方式

  • application.properties:

    user1.name =name22
    user.age = 22
    

    特点:冗余

  • application.yml

    user1:
      name: zhh
      age: 23
    

    配置方法:注解配置:

    @Value("${user1.name}")
    private String name;
    @Value("${user1.age}")
    private String age;
    
8,视图跳转
  • 导入freemarker依赖:

    
                org.springframework.boot
                spring-boot-starter-freemarker
            
    
  • 建立controller目录用来返回视图跳转信息

  • 建立controller类:

    @Controller
    public class freemarkerIndexController {
        @RequestMapping("/freemarkerIndex")
        public String freemarkerIndex(Map result, HttpServletRequest request){
            result.put("name","zhanghualong");//result用来存储信息,在视图中可以直接使用${var}形式来访问数据
            //${var}的值为result.get(var)
            return "freemarkerIndex";//这里的返回值为视图名,springboot会自动在resource/templates下寻找对应的.ftlh文件
        }
    }
    
  • 建立视图

    
    
        Welcome!
    
    
        ${name}
    
    
    

    注:这里使用了freemarker引擎,这个引擎的作用是将我们写好的视图文件和后端文件一并解析为html文件,比如视图中的${name},就是freemarker负责解析,几种常见语法:

    <#if sex==0>
        男
        <#elseif sex==1>
         女
            
                其他
            
    
    <#list userList as user>
        ${user}
    
        
    
  • 向视图中传值的两个方式

    • 用参数传递:

      public String freemarkerIndex(Map result){}
      //此时result就会被传递到视图页面中
      
    • 用HttpServletRequest request传递

      public String freemarkerIndex(HttpServletRequest request){
          request.setAttribute("user1","bageyalu");
      }
      
9,配置文件自动注入和装配
  • 在.yml或者.properties问价中设置属性值,有两种方式可以引入实体类:

    • @Value注解:

      public class HelloWorld {
          @Value("${user1.name}")
          private String name;
          @Value("${user1.age}")
          private String age;
      }
      
      
    • 自动注入

      @Component//将这个类注解为一个bean对象,其他引用这个对象可以直接用Autowired注解自动装配这个对象
      @ConfigurationProperties(prefix = "user1")//参数为配置的类名
      @Data//这个注解为lombok注解,为这个类提供了get和set方法,有参构造和无参构造以及tostring方法等方法
      public class NiuMaEntity {
          private String name;
          private String age;
          private String add;
      }
      
  • 自动配置实例:

    @Component
    @ConfigurationProperties(prefix = "user1")
    @Data
    public class NiuMaEntity {
        private String name;
        private String age;
        private String add;
    }
    
    
    
    @RestController
    public class NiuMaController {
    
        @Autowired
        private NiuMaEntity niuMaEntity;
    
        @RequestMapping("/getNiuMa")
        public String getNiuMa(){
            return niuMaEntity.getName() +","+niuMaEntity.getAge()+","+niuMaEntity.getAdd();
        }
    
    
    }
    
    
    
    
10,配置文件占位符
  • 在配置文件中,我们可以使用一些占位符来输出随机数等内容:如 r a n d o m . v a l u e 、 {random.value}、 random.value、{random.int}、${random.long}

    r a n d o m . i n t ( 10 ) 、 {random.int(10)}、 random.int(10)、{random.int[1024,65536]},${app.name:默认值}

  • user1:
        name: zhl
      age: ${random.int(10)}
        add: 兰州
    
  

### 11,多个配置文件设置springboot访问路径:

​```yml
spring:
  profiles:
    active: pre

在application.yml中如此配置,则会自动寻找到命名为application-pre.yml的文件

12,修改springboot项目启动端口和添加访问路径
server:
    port: 8081
    servlet:
        context-path: /zhl
13,输出日志
  • springboot中共有三种日志,分别是info,sql和error,info用来输出系统级日志,error输出错误信息,sql记录数据库访问日志

  • 添加配置信息,在resource目录下新建目录log,在log中新建logback.xml,在此文件中输入以下代码:

    
        
        
        
        
            
                %d %p (%file:%line)- %m%n
                UTF-8
            
        
    
        
        
        
        
        
            log/file/fileLog.log
            
                log/file/fileLog.log.%d.%i
                
                    
                    64 MB
                
            
            
                
                    %d %p (%file:%line)- %m%n
                
                UTF-8
                
            
        
    
        
        
            log/sql/sqlFile.log
            
                log/sql/sqlFile.log.%d.%i
                
                    
                    64 MB
                
            
            
            
                
                
                    %d %p (%file:%line)- %m%n
                
                UTF-8
                
            
        
    
    
        
        
            log/error/errorFile.log
            
                log/error/errorFile.%d.log.%i
                
                    
                    64 MB
                
            
            
            
                
                
                    %d %p (%file:%line)- %m%n
                
                UTF-8
                
            
            
            
                ERROR
                ACCEPT
                DENY
            
        
        
        
        
        
            
            
            
        
    
        
        
            
            
        
    
    
  • 在yml文件中配置日志访问路径:

    logging:
        config: classpath:log/logback.xml
    
  • 日志会自动存储到当前项目路径/log下,有filelog,errorlog,sqllog三个文件夹

  • 需要输出日志的类上添加@Slf4j注解,即可在类中调用log.info(),log.error(),log.debug()等方法:

    log.info("user+{}",niuMaEntity.toString());//花括号代表变量,都好后写变量值即可
    
14,创建定时任务
@Component
public class ScheduledTasks {
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    @Scheduled(fixedRate = 5000)//fixedRate参数可以设置执行间隔,单位为秒,也可以使用cron参数,详见https://www.bejson.com/othertools/cron/
    public void reportCurrentTime() {
        System.out.println("现在时间:" + dateFormat.format(new Date()));
    }
}
15,全局捕获异常:
  • 建立捕获异常的类,并在类上添加@ControllerAdvice注解,表明这个类是全局捕获异常的类

    @ControllerAdvice
    public class MayiktExceptionHandler {
    
        
        @ExceptionHandler(RuntimeException.class)//注解意义为对所有在运行的类捕获异常
        @ResponseBody//注解返回格式,加ResponseBody就是返回json格式,不加就是返回视图路由信息
        public Map exceptionHandler() {
            Map map = new HashMap<>();
            map.put("error", "500");
            map.put("msg", "系统出现错误~");
            return map;
        }
    }
    

16,打包应用程序

  • 先用mvn程序将程序打包

    mvn clean package//在当前路径下即可
    
  • 用java -jar 包名运行

  • 注:打包前需要在pom文件中加入如下代码指明程序的入口类,不然在运行时会报一个未能识别主清单的错误。

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
                
                    com.mayikt.App
                    
                        
                            junit
                            junit
                        
                        
                            org.springframework.boot
                            spring-boot-starter-test
                        
                    
                
            
        
    
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号