SpringBoot学习小结(2018-08-11)

SpringBoot的基本配置:

org.springframework.boot.autoconfigure.SpringBootApplication:

.@SpringBootApplication:核心注解,注解在带main方法的主类上,是整个项目的入口,同时加入SpringApplication.run(App.class, args)启动整个项目.

方法示例:

/*@SpringBootApplication(XXX.class):这种格式用来过滤掉不需要的默认配置*/
@SpringBootApplication
/*@SpringBootConfiguration
 *@EnableAutoConfiguration
 *@ComponentScan*/
/*这3个注解加起来的效果等同于@SpringBootApplication*/
public class App
{
    public static void main( String[] args )
    {
     //String a = "123";
        System.out.println( "Hello World!" );
        SpringApplication.run(App.class, args);
    }
}

二. @RestConroller定义一个controller注解指定类为控制器。@RequestMapping:作用于类中的方法,用于指定访问URL路径

示例:

@RestController
public class HelloWorldController {
 @Value(value="${test.name}")
 String name ;
 @Value(value="${test.age}")
 String age;
 
 @Autowired
 private UserConfig userConfig;
 @RequestMapping("/hello111")
 public String Hello(){
  String message = "name="+name+"age="+age;
  return message;
 }
 @RequestMapping("/hello222")
 public String HelloWorld(){
  String message = "name="+name+"age="+age;
  return message;
 }
 
 @RequestMapping("/hello333")
 public String HelloWorldOk(){
  String message = "name="+userConfig.getName()+"age="+userConfig.getAge();
  return message;
 }
}

上例中共用2种方式实现了参数的自动配置:

@Value(value="${test.name}")
 String name ;
 @Value(value="${test.age}")
 int age;

@Value注解形式为在src/main/resources 目录下的application.properties配置文件中定义了以下参数:

server.port=8081
test.name=张三
test.age=24

此配置文件中可以更改端口信息(server.port=8081)和定义属性(test.name=张三
test.age=24)等信息,这种方式定义属性不安全,推荐使用第2种

第二种方式为定义一个实体对象的配置文件:user.proterties,里面定义出UserConfig实体对象私有属性值:

user.name=李四
user.age=12

然后新建这个实体对象UserConfig.java,设置get()和set()方法,

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix="user",locations={"classpath:user.properties"})
public class UserConfig {
 private String name ;
 private int age;
 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;
 }
}

@Component注解用于确定此类是一个配置对象,

@ConfigurationProperties(prefix="user",locations={"classpath:user.properties"}),注解用于指定此类获取配置文件的位置,

prefix="user"指配置文件中是否有前缀,这样配置后,都会去配置文件中找到各自定义的属性值。

在带main方法的主类里面run as java application 即可启动整个项目。启动后会出现SpringBoot特殊图案:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.5.RELEASE)---------------截图不好看0.0.。。。。。。。。。。。。。。。。。。。

启动成功后会有启动成功信息:

: Tomcat started on port(s): 8081 (http)

: Started App in 5.284 seconds (JVM running for 5.836)

: Initializing Spring FrameworkServlet 'dispatcherServlet'
: FrameworkServlet 'dispatcherServlet': initialization started
: FrameworkServlet 'dispatcherServlet': initialization completed in 41 ms

确认启动的端口号等信息,即可通过浏览器访问了。

遇到的坑:myeclipse10对1.8版本的jdk支持性不是很好,而最新版本的maven要求jdk版本最低为1.7,之前用1.8的jdk,在Controller中定义name和age变量时直接报错了,网上查了许久换成了1.7,马上就好了,服!!!

当启动后不知道怎么关闭服务,所以当新建第二个maven项目跑的时候,报错了,第一个端口已经被占用,需要重启时,需要在cmd中输入命令:netstat -aon |findstr 8080   8080即为第一次启动时的端口号,找出占用当前端口的线程(监听),并杀掉:taskkill  /f /t /im AAAA,AAAA即为占用的线程。很痛苦啊有木有!!!!!!!!!!!!!!!


 

 

 

 

 

 

阅读更多
换一批

没有更多推荐了,返回首页