spring boot学习1之main和tomcat启动及log日志

写了个spring boot例子,的确是零配置,平时需要写个web例子测试之类的时候,用它还挺方便的。现在开发都搞微服务,api端之前都是dubbo或jesry,现在也可以用spring boot了。

    现在记录下spring boot的小例子,maven构造的。

     创建个maven项目,jar或war都行,jar的话打包后通过main方法启动,war的话打包后直接扔到tomcat即可。

     创建个war的maven项目。


其中pom.xml

[plain]  view plain  copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  2.   <modelVersion>4.0.0</modelVersion>  
  3.   <groupId>com.yhxy.vdc.dbcp</groupId>  
  4.   <artifactId>database_copy</artifactId>  
  5.   <version>0.0.1-SNAPSHOT</version>  
  6.   <packaging>war</packaging>  
  7.     
  8.   <properties>  
  9.    <spring_versin>1.4.3.RELEASE</spring_versin>  
  10.   </properties>  
  11.    <!--  <parent>  
  12.         <groupId>org.springframework.boot</groupId>  
  13.         <artifactId>spring-boot-starter-parent</artifactId>  
  14.         <version><span style="font-family:Arial, Helvetica, sans-serif;">1.4.3.RELEASE</span></version>  
  15.     </parent>   -->  
  16.     <dependencies>  
  17.         <dependency>  
  18.             <groupId>org.springframework.boot</groupId>  
  19.             <artifactId>spring-boot-starter-web</artifactId>  
  20.             <version>${spring_versin}</version>  
  21.             <exclusions>  
  22.                 <exclusion>  
  23.                     <groupId>org.springframework.boot</groupId>  
  24.                     <artifactId>spring-boot-starter-tomcat</artifactId>  
  25.                 </exclusion>  
  26.             </exclusions>  
  27.         </dependency>  
  28.         <dependency>  
  29.             <groupId>org.springframework.boot</groupId>  
  30.             <artifactId>spring-boot-starter-tomcat</artifactId>  
  31.             <version>${spring_versin}</version>  
  32.             <scope>provided</scope>  
  33.         </dependency>  
  34.           
  35.         <dependency>  
  36.             <groupId>com.alibaba</groupId>  
  37.             <artifactId>fastjson</artifactId>  
  38.             <version>1.2.7</version>  
  39.         </dependency>  
  40.   
  41.           
  42.         <!-- jsp -->  
  43.         <dependency>  
  44.             <groupId>javax.servlet</groupId>  
  45.             <artifactId>javax.servlet-api</artifactId>  
  46.             <version>3.1.0</version>  
  47.             <scope>provided</scope>  
  48.         </dependency>  
  49.         <dependency>  
  50.             <groupId>javax.servlet.jsp</groupId>  
  51.             <artifactId>javax.servlet.jsp-api</artifactId>  
  52.             <version>2.2.1</version>  
  53.             <scope>provided</scope>  
  54.         </dependency>  
  55.         <dependency>  
  56.             <groupId>jstl</groupId>  
  57.             <artifactId>jstl</artifactId>  
  58.             <version>1.2</version>  
  59.         </dependency>  
  60.         <dependency>  
  61.             <groupId>taglibs</groupId>  
  62.             <artifactId>standard</artifactId>  
  63.             <version>1.1.2</version>  
  64.         </dependency>  
  65.           
  66.     </dependencies>  
  67.   <build>  
  68.     <sourceDirectory>src</sourceDirectory>  
  69.     <plugins>  
  70.       <plugin>  
  71.         <artifactId>maven-compiler-plugin</artifactId>  
  72.         <version>3.1</version>  
  73.         <configuration>  
  74.           <source>1.7</source>  
  75.           <target>1.7</target>  
  76.         </configuration>  
  77.       </plugin>  
  78.     </plugins>  
  79.   </build>  
  80.     
  81. </project>  

我把parent注释掉了,使用的话,pom.xml文件报错,不知道是不是本地环境问题,去掉也无所谓。

controller的部分代码

[java]  view plain  copy
  1. @RestController  
  2. @EnableAutoConfiguration  
  3. @RequestMapping("/dbcp")  
  4. public class DatabaseCopyController {  
  5.   
  6.       
  7.     private static Logger LOG =Logger.getLogger(DatabaseCopyController.class.getName());  
  8.       
  9.       
  10.     @RequestMapping("/hello")  
  11.     @ResponseBody  
  12.     public String hello(HttpServletRequest request){  
  13.         LOG.info("os=" + System.getProperty("os.name"));  
  14.           
  15.           
  16.         return "hello....";  
  17.     }  
再写个Application.java

[plain]  view plain  copy
  1. package com.yhxy.vdc.dbcp;  
  2.   
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.boot.builder.SpringApplicationBuilder;  
  6. import org.springframework.boot.web.support.SpringBootServletInitializer;  
  7.   
  8. @SpringBootApplication  
  9. public class Application extends SpringBootServletInitializer{  
  10.   
  11.      @Override    
  12.     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {    
  13.         return application.sources(Application.class);    
  14.     }    
  15.   
  16.        
  17.      public static void main(String[] args) throws Exception {  
  18.             SpringApplication.run(Application.class, args);  
  19.         }  
  20. }  
看到这里有个main方法了吗?说明只要直接run就可以把这项目运行起来了。就不贴运行起来的日志了。

如果是直接run的方式运行的话,会使用spring boot里内嵌的tomcat或jetty(还没进行研究)。

如果不想使用内嵌的tomcat,而是使用自己的tomcat(方便优化之类的),那只要把项目打包war后扔进自己的tomcat即可。

     日志配置,spring boot是默认使用logback.xml的,所以想自定义的话,在resources下自定义个logback.xml,比如

[html]  view plain  copy
  1. <!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->  
  2. <configuration scan="true" scanPeriod="10 seconds">  
  3.     <include resource="org/springframework/boot/logging/logback/base.xml" />  
  4.   
  5. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
  6.     <!-- encoders are assigned the type  
  7.          ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->  
  8.     <encoder>  
  9.       <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>  
  10.     </encoder>  
  11.   </appender>  
  12.   
  13.     <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  14.         <File>${LOG_PATH}/info.log</File>  
  15.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  16.             <fileNamePattern>${LOG_PATH}/info-%d{yyyyMMdd}.log.%i</fileNamePattern>  
  17.             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
  18.                 <maxFileSize>500MB</maxFileSize>  
  19.             </timeBasedFileNamingAndTriggeringPolicy>  
  20.             <maxHistory>2</maxHistory>  
  21.         </rollingPolicy>  
  22.         <layout class="ch.qos.logback.classic.PatternLayout">  
  23.             <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n  
  24.             </Pattern>  
  25.         </layout>  
  26.     </appender>  
  27.   
  28.     <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  29.         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">  
  30.             <level>ERROR</level>  
  31.         </filter>  
  32.         <File>${LOG_PATH}/error.log</File>  
  33.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  34.             <fileNamePattern>${LOG_PATH}/error-%d{yyyyMMdd}.log.%i  
  35.             </fileNamePattern>  
  36.             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
  37.                 <maxFileSize>500MB</maxFileSize>  
  38.             </timeBasedFileNamingAndTriggeringPolicy>  
  39.             <maxHistory>2</maxHistory>  
  40.         </rollingPolicy>  
  41.         <layout class="ch.qos.logback.classic.PatternLayout">  
  42.             <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n  
  43.   
  44.             </Pattern>  
  45.         </layout>  
  46.     </appender>  
  47.       
  48.   
  49.     <root level="INFO">  
  50.         <appender-ref ref="STDOUT" />  
  51.         <appender-ref ref="INFO_FILE" />  
  52.         <appender-ref ref="ERROR_FILE" />  
  53.     </root>  
  54.       
  55. </configuration>  
再创建个application.properties文件,指定logback.xml位置

[plain]  view plain  copy
  1. logging.config=classpath:logback.xml  
  2. logging.path=/logs  
具体的更多信息可以查询的官网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值