《javaEE开发的颠覆 springboot实战》

springboot实战

最近在看这本书,觉得算是springboot里讲的比较好的,归纳一下知识点

入口类和@SpringbootApplication

  • *Application的入口类,有个标准的main方法,@SpringbootApplication是核心注解。主要组合了 @Configuration、@EnableAutoConfiguration、@ComnentScan 注解。等同于在入口类中使用该注解

  • @EnableAutoConfiguration 根据maven配的jar包自动配置

  • @Configuration 等同于xml的beans 配合@Bean

  • @ComnentScan 扫描某包下的注解

springboot的配置文件

  • application.properties或.yml放在src/main/resource中
server.port=9090  //修改端口  
server.context-path=/     //根路径  

starter pom

  • Spring boot 为我们提供的,只要使用了相关场景,相关的技术配置就会相处,就可以得到自动配置Bean

属性配置

1 .除了常规的@PropertySource引入文件。也可以通过@Value注入

  • application.properties
test.name=hello  
  • Controller
@Value("${test.name}")
  private String testName;

@RequestMapping("/hello/{myName}")
String index(@PathVariable String myName) {  
    return "hello world" + myName+testName;
}

2 .可以用@ConfigurationProperties(prefix ="Book")将外部配置文件注入给对象

//application.properties 
Book.name=hello  
Book.pwd=world

//Book对象(名字随意)
@ConfigurationProperties(prefix ="Book")
public class Book   {  
    private String name;
    private  String pwd
}
  • utf-8编码配置

    1.不用springboot本来是要在web.xml中配置过滤器

    • 使用springboot的@ConfigurationProperties(prefix ="Book")
默认编码是Utf-8的,修改则改application.properties
spring.http.encoding=编码

@ConfigurationProperties(prefix ="spring.http.encoding")

日志配置

  • 在application.properties配置文件中配置
    (1)java util logging
    (2)log4j
    (3)log4j2
    (4)logback
    默认是使用logback,也可以用log4j

    • 配置xml文件,拷贝至resource目录下
<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->  
<configuration scan="true" scanPeriod="10 seconds">  

  <!-- Simple file output -->  
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
    <!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->  
    <encoder>  
        <pattern>  
            [ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} [%line] - %msg%n  
        </pattern>  
        <charset>UTF-8</charset> <!-- 此处设置字符集 -->  
    </encoder>  

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
      <!-- rollover daily 配置日志所生成的目录以及生成文件名的规则 -->  
      <fileNamePattern>logs/mylog-%d{yyyy-MM-dd}.%i.log</fileNamePattern>  
      <timeBasedFileNamingAndTriggeringPolicy  
          class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
        <!-- or whenever the file size reaches 64 MB -->  
        <maxFileSize>64 MB</maxFileSize>  
      </timeBasedFileNamingAndTriggeringPolicy>  
    </rollingPolicy>  


    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">  
      <level>DEBUG</level>  
    </filter>  
    <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->  
    <prudent>true</prudent>  
  </appender>  


  <!-- Console output -->  
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
    <!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->  
      <encoder>  
          <pattern>  
              [ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} [%line] - %msg%n  
          </pattern>  
          <charset>GBK</charset> <!-- 此处设置字符集 -->  
      </encoder>  
    <!-- Only log level WARN and above -->  
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">  
      <level>WARN</level>  
    </filter>  
  </appender>  


  <!-- Enable FILE and STDOUT appenders for all log messages.  
       By default, only log at level INFO and above. -->  
  <root level="INFO">  
    <appender-ref ref="FILE" />  
    <appender-ref ref="STDOUT" />  
  </root>  

  <!-- For loggers in the these namespaces, log at all levels. -->  
  <logger name="pedestal" level="ALL" />  
  <logger name="hammock-cafe" level="ALL" />  
  <logger name="user" level="ALL" />  
</configuration>  
  • application.properties文件配置
#指定log的配置文件,以及记录Spring Boot的log级别  
logging.config=logback.xml  
logging.level.org.springframework.web: INFO  

常用的注解

(1)@RestController和@Controller指定一个类,作为控制器的注解

(2)@RequestMapping方法级别的映射注解,这一个用过Spring MVC的小伙伴相信都很熟悉

(3)@EnableAutoConfiguration和@SpringBootApplication是类级别的注解,根据maven依赖的jar来自动猜测完成正确的spring的对应配置,只要引入了spring-boot-starter-web的依赖,默认会自动配置Spring MVC和tomcat容器

(4)@Configuration类级别的注解,一般这个注解,我们用来标识main方法所在的类

(5)@ComponentScan类级别的注解,自动扫描加载所有的Spring组件包括Bean注入,一般用在main方法所在的类上

(6)@ImportResource类级别注解,当我们必须使用一个xml的配置时,使用@ImportResource和@Configuration来标识这个文件资源的类。

(7)@Autowired注解,一般结合@ComponentScan注解,来自动注入一个Service或Dao级别的Bean

(8)@Component类级别注解,用来标识一个组件,比如我自定了一个filter,则需要此注解标识之后,Spring Boot才会正确识别。

kxind

性别:男. 敢于尝试 爱折腾的死宅程序猿. https://github.com/kxinds