SpringBoot入门使用、集成Thymeleaf以及SpringBoot的MVC配置

1 Spring Boot 的基本使用

1.1 独立运行

(1)导入打包插件

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

(2)打包
在这里插入图片描述
(3)运行
在该jar包目录下,打开控制台,输入命令:

java -jar 包名.jar

1.2 热部署

(1)导入依赖

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

(2)编译代码 Ctrl + F9
(3)配置IDEA的自动编译功能
在这里插入图片描述
点击OK即可。
按住ctrl +shift + alt + / -> 打开registry
在这里插入图片描述
勾选标记项。

1.3 Spring Boot 的读取配置

1.3.1 使用@Value标签

application.yml:

school:
  teacher:
    name: laozhao
    age: 30
    tel: 666666

绑定配置对象

@Component
@AllArgsConstructor
@NoArgsConstructor
public class Teacher {

    @Value("${school.teacher.name}")
    private String name;
    @Value("${school.teacher.age}")
    private int age;
    @Value("${school.teacher.tel}")
    private String tel;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", tel='" + tel + '\'' +
                '}';
    }
}

1.3.2 使用@ConfigurationProperties

application.yml:

user:
  name: lisi
  age: 25
  address: jiuyanqiao

绑定配置的对象

@Component
@ConfigurationProperties(prefix = "user")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private String name;
    private int age;
    private String address;

}

1.4 多环境配置切换

1.4.1 方式一

application.yml:

spring:
  profiles:
    active: test	#激活(选择)环境test
---
spring:
  profiles: dev		#指定环境名字dev
server:
  port: 9999
---
spring:
  profiles: test	#指定环境名字test
server:
  port: 8888

注意:jar包方式指定配置运行:java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

1.4.2 方式二

通过配置文件的名字来识别环境

application-dev.yml:

server:
  port: 9999

application-test.yml:

server:
  port: 8888

application.yml:

spring:
  profiles:
    active: test 
    #根据文件名字配置 application-dev.properties

1.5 日志使用

1.5.1 基本使用

private Logger logger = LoggerFactory.getLogger(MySpringBootTest.class);

...
 logge.error("我是一个error日志.....");
 logger.warn("我是一个warn日志.....");
 logger.info("我是一个info日志.....");
logger.debug("我是一个debug日志.....");
logger.trace("我是一个trace日志.....");

1.5.2 安装Lombok插件打印日志

(1)安装Lombok插件
在这里插入图片描述
安装完毕需要重启。
(2)打印日志

@Controller
@Slf4j
public class EmployeeController {

    @RequestMapping("/")
    @ResponseBody
    String log() throws SQLException {
        log.debug("调试信息。。。。。。。。。。。。。");
        log.info("详细信息。。。。。。。。。。。。。。");
        log.trace("全部信息。。。。。。。。。。。。。。");
        log.warn("警告信息。。。。。。。。。。。。。。");
        log.error("错误信息。。。。。。。。。。。。。。");
        return "";
       
    }
}

1.5.3 配置日志

#logging.level.cn.itsource=error
#logging.file=my.txt
#logging.file.max-size=1KB
#logging.pattern.console="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"

1.5.4 指定配置文件配置logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- scan="true" scanPeriod="1 seconds" -->
<configuration debug="true" >

    <!-- 日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n"/>

    <!--ConsoleAppender 用于在屏幕上输出日志-->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--定义控制台输出格式-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>logs/springboot.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>logs/springboot-%d{yyyyMMdd}-%i.log.gz</fileNamePattern>

            <maxFileSize>1KB</maxFileSize>
            <maxHistory>30</maxHistory>
            <!--总上限大小-->
            <totalSizeCap>5GB</totalSizeCap>
        </rollingPolicy>
        <!--定义控制台输出格式-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>

    </appender>

    <!--root是默认的logger 这里设定输出级别是debug-->
    <root level="info">
        <!--定义了两个appender,日志会通过往这两个appender里面写-->
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </root>

    <!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
    <!--additivity表示要不要使用rootLogger配置的appender进行输出-->
    <logger name="cn.itsource" level="debug" additivity="false">
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </logger>

</configuration>

2 SpringBoot集成Thymeleaf

2.1 导入依赖

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

2.2 创建模板

resources/templates/hello.html:

<html xmlns:th="http://www.thymeleaf.org">
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="webjars/jquery/3.4.1/jquery.js"></script>
    <script>
        alert($);
    </script>
</head>
<body>
<p th:text="'您好'+${username}"></p>
</body>
</html>

2.3 编写controller

	/**
     * thymeleaf测试
     * @param model
     * @return
     */
    @RequestMapping("/thyme")
    public String index(Model model){
        model.addAttribute("username","老赵");
        return "index";
    }

2.4 测试

启动服务,访问localhost:8080/thyme/

2.5 Thymeleaf的自动配置原理

@EnableAutoConfiguration 开启自动配置功能,通过一个AutoConfigurationImportSelector导入选择器去扫描 spring-boot-autoconfigure-2.0.5.RELEASE.jar 自动配置包下面的 spring.factories 文件中的很多很多的自动配置的类
而:ThymeleafAutoConfiguration 是的Thymeleaf的自动配置 ,在这个自动配置类里面通过一个ThymeleafProperties去读取配置文件中的配置(也有默认配置) ,来自动配置Thymeleaf,比如Thymeleaf的视图解析器的自动配置如下:

@Bean
@ConditionalOnMissingBean(name = "thymeleafViewResolver")
public ThymeleafViewResolver thymeleafViewResolver() {
	ThymeleafViewResolver resolver = new ThymeleafViewResolver();
	...
	return resolver;
}

3 SpringBoot中的MVC配置

3.1 配置拦截器

定义拦截器:

@Component
public class MyInterceptor implements HandlerInterceptor{

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("我是拦截器。。。。。。。。。");
        return true;
    }

}

在主配置类中注册拦截器:

/**
 * 主配置类
 */
@SpringBootApplication
@MapperScan(basePackages = "cn.dxc.springboot.mapper")
public class ApplicationConfig implements WebMvcConfigurer{

    @Autowired
    private MyInterceptor myInterceptor;

    /**
     * 配置拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
    }
}

3.2 配置视图解析器

在主配置类编写视图解析器:

	/**
     * 配置试图解析器
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/temp").setViewName("/index");
    }

当访问/temp就会定位到 templates/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值