Eclipse 搭建Spring boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。在以前spring mvc、springdata、hibernate等框架的配置太过于复杂和繁多,所以在spring boot框架中主要就是简化的配置文件的配置。Spring boot也可以引用于微服务,提供服务接口提供别人进行调用。
Spring boot 可以说是spring mvc的升级版,两者没有必然的关系,可以直接学习spring boot
Eclipse中搭建过程:
本案例使用maven方式构建项目
1、 首先在eclipse中创建一个maven工程
2、 在pom.xml中添加springboot的相关配置(如果下载jar包速度慢,可以配置国内镜像,提高下载速度,具体配置方式参考http://www.cnblogs.com/xiongxx/p/6057558.html)
<projectxmlns="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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lhc.springboot</groupId>
<artifactId>SpringBootDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>SpringBoot_test1</finalName>
</build>
</project>
3、 在src/main/java中,新建一个包,比如test,在包中新建一个类,如Application.java,代码如下:
package test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // 使用@SpringbootApplication注解 可以解决根类或者配置类(我自己的说法,就是main所在类)头上注解过多的问题,一个@SpringbootApplication相当于@Configuration,@EnableAutoConfiguration和 @ComponentScan 并具有他们的默认属性值。
public class Application {
public static void main(String[] args){
SpringApplication.run(Application.class, args);
}
}
4、 在test包下,新建一个Controller类,比如ExampleController.java,代码如下:
package test;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //spring4之后新添加的注解,原来返回json需要@responseBody配合@controller实现,如果使用@RestController就相当于加上了@responseBody和@controller注解
public class ExampleController {
@RequestMapping("/") //这里只有一个/,代表项目的跟路径,比如http://localhost:8080时,就可以直接调用此方法
String home(){ //当运行Application类后,可以通过浏览器输入http://localhost:springboot的端口号/进行访问
return"Hello World!";
}
}
5、 启动springboot,启动方式如下:
方式一:(一般推荐这种方式,简单)
直接在eclipse中启动Application的main方法
方式二:
使用maven的 run方法启动
cmd 进入类所在的磁盘路径,执行命令mvn spring-boot:run
方式三:
mvn install先编译,编译完毕后进入target目录,接下来使用命令java–jar编译后的文件名称进行启动
6、 在浏览器中,输入http://localhost:springboot的端口号(springboot的端口号默认是8080),如:http://localhost:8080,这样就可以调用ExampleController类中的home方法,并且会把返回的“Hello World! ”输出到页面上显示
到此为止,一个简单的springboot就已经搭建完毕了
下面讲解下springboot的属性配置
1、 在src/main/java目录下,新建一个application.properties或者application.yml配置文件(文件名称不能变),这个配置文件是springboot的全局配置文件。application.properties和application.yml只能选择其中一种,区别在于:
application.properties写法:
server.port=8089
server.context-path=/demo
而application.yml写法:
server:
port: 8089
context-path: /demo
那么可以看到,如果是properties类型文件,每个配置属性偶要写全,而yml类型文件,就可以分开写,但是需要注意,yml写法冒号与值之间要有空格,不然语法不对
附所有springboot配置文件属性查阅地址:
http://blog.csdn.net/wazz753/article/details/72460519
http://www.tuicool.com/articles/veUjQba
http://www.flyat.cc/article/dde82ee1dc694b04ae7ec8dc2e658104
2、 在配置文件中,自定义一个属性,在类中进行获取(这里以properties类型文件举例)
1) 在配置文件中添加str=aaaaaa
2) 在ExampleController.java中添加如下属性和注解即可,那么在上面写到的home方法或者其他方法中,就可以使用这个值
@Value("${str}")
private String str;
3) 那么也可以在配置文件中定义的属性,引用配置文件中已经定义的属性,如:
str=aaaaaa
sayName="我的名字是${str}"
在类中,也可以向上面2步骤方式得到sayName的值
4) 定义一个实体,在配置文件中配置实体属性
4.1) 新建一个bean包,并新建一个一个实体类,如UserBean.java,代码如下:
package bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component//@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
@ConfigurationProperties(prefix="user")//这里定义的前缀,
//注意,还需要在入口添加@EnableConfigurationProperties({UserBean.class})
public class UserBean {
private String uname;
private String pwd;
public String getUname() {
returnuname;
}
public void setUname(String uname) {
this.uname= uname;
}
public String getPwd() {
returnpwd;
}
public void setPwd(String pwd) {
this.pwd= pwd;
}
}
4.2) 在配置文件中添加如下代码:
user.uname=zhangsan
user.pwd=123
注意,这里必须以user开头,因为在实体类中配置了prefix="user"这个前缀
4.3)在controller类中添加如下代码:
@Autowired
private UserBean user;//这个名字,不一定要与上面提到的前缀一样,因为会自动按照类型来进行匹配,当然如果名称与配置的前缀一样也没有问题
4.3) 配置时需要注意,如果实体bean是Application类所在包的子包,那么无需添加额外配置,但是,如果bean包不属于Application类所在的包的子包,那么就需要额外在Application类中,在类上面添加如下注解:
@EnableConfigurationProperties({UserBean.class})//自动映射一个POJO到Spring Boot配置文件(默认是application.properties文件)的属性集
修改后的Application类完整代码如下:
packagetest;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import bean.UserBean;
@SpringBootApplication// 使用@SpringbootApplication注解 可以解决根类或者配置类(我自己的说法,就是main所在类)头上注解过多的问题,一个@SpringbootApplication相当于@Configuration,@EnableAutoConfiguration和@ComponentScan 并具有他们的默认属性值。
@EnableConfigurationProperties({UserBean.class})//自动映射一个POJO到Spring Boot配置文件(默认是application.properties文件)的属性集
public class Application {
public static void main(String[] args){
SpringApplication.run(Application.class,args);
}
}
3、 在项目中,也可以配置很多个配置文件(但是只能有一个配置文件是生效的,比如开发环境启用开发环境的配置文件,生产环境启用生产环境的配置)
1) 新建或者把刚才的application.properties复制一份,更改名称叫做application-dev.properties,这个文件当做开发环境的配置文件,并且设置端口号,比如设置端口为8088
2) 再新建或者把刚才的application.properties复制一份,更改名称叫做application-prod.properties,这个文件当做生产环境的配置文件,并且设置端口号,比如设置端口为8089
3) 把application.properties文件中的配置内容全部删除,改成spring.profiles.active=dev或者改成spring.profiles.active=prod,这样就可以在开发环境和生产环境中间进行切换不同环境的配置