初识springboot 以及基本项目搭建java
因为新的项目须要搭建后台框架,以前的springmvc架构也使用屡次,在我印象中springboot的微服务架构更轻量级更容易搭建,因此想去试试springboot的项目搭建,接下来,和你们分享一下初识springboot后对springboot的理解以及springboot的搭建过程
web
一.什么是springboot?为何要使用springboot?spring
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。在我看来,数据库
springboot就是spring以及springmvc的衍生,是“懒人工具包”
编程
spring boot只是一个配置工具,整合工具,辅助工具.springboot
springboot 最大化的实现了convention over configuration(约定大于配置)架构
Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的ioc和 aop. ioc提供了依赖注入的容器, aop解决了面向横切面的编程,而后在此二者的基础上实现了其余延伸产品的高级功能。mvc
Spring MVC是基于Servlet 的一个 MVC 框架主要解决 WEB 开发的问题,由于 Spring 的配置很是复杂,各类XML、 JavaConfig、hin处理起来比较繁琐。因而为了简化开发者的使用,从而创造性地推出了Spring boot,约定优于配置,简化了spring的配置流程。app
说得更简便一些:Spring 最初利用“工厂模式”(DI)和“代理模式”(AOP)解耦应用组件。你们以为挺好用,因而按照这种模式搞了一个 MVC框架(一些用Spring 解耦的组件),用开发 web 应用( SpringMVC )。而后发现每次开发都写不少样板代码,为了简化工做流程,因而开发出了一些“懒人整合包”(starter),这套就是 Spring Boot。框架
总结一下springboot的优势:
(1). 遵循"约定优于配置"原则,使用Spirng Boot只需不多的配置,大部分时候可使用默认配置;
(2) 项目快速搭建,另外还能够无配置整合第三方框架;
(3) 简化Maven及Gradle配置
(4) 内嵌入Servlet如Tomcat、jetty容器,应用可用jar包运行(java -jar);
(5) 可彻底不使用xml配置,只使用自动配置和Java Config;
(6) 有多种强大的开发包,支持热启动
spring-boot-starter-web:支持全栈web开发,里面包括了Tomcat和Spring-webmvc。
spring-boot-starter-mail:提供对javax.mail的支持.
spring-boot-starter-ws: 提供对Spring Web Services的支持
spring-boot-starter-test:提供对经常使用测试框架的支持,包括JUnit,Hamcrest以及Mockito等。
spring-boot-starter-actuator:支持产品环境下的一些功能,好比指标度量及监控等。
spring-boot-starter-jetty:支持jetty容器。
spring-boot-starter-log4j:引入默认的log框架(logback)
了解了springboot的概念和优点以后,让咱们来试一下如何在短短几分钟内搭建springboot项目
二. springboot项目搭建
1.新建maven应用(在idea下新建maven应用)
2.新建maven应用以后,开始配置pom.xml而后import。
在pom中添加如下配置
1 <!-- Spring boot 父引用--> 2 <parent> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-parent</artifactId> 5 <version>1.4.0.RELEASE</version> 6 </parent> 7 8 <!-- Spring boot 核心web--> 9 <dependencies> 10 <dependency> 11 <groupId>org.springframework.boot</groupId> 12 <artifactId>spring-boot-starter-web</artifactId> 13 </dependency> 14 </dependencies>
3. 而后咱们新建controller
UserController
@RestController public class UserController { //日志 private final Logger log = LoggerFactory.getLogger(UserController.class); @Autowired//自动注入,能够直接省略掉set和get,它会帮咱们set和get private UserService userService; @RequestMapping("/getUser") public User getUser() { return userService.getUser(); } @RequestMapping(value="/addUser") public int addUser() { List<User> users = new ArrayList<User>(); User user = new User(); user.setId(2); user.setPassword("32131"); user.setUsername("萨达"); users.add(user); log.info("个人用户名是"+user.getUsername()+"个人密码是"+user.getPassword()); return userService.addUserWithBackId(users); } }
这里个人接口调用了service和数据库,你们在写这个controller的时候先随便返回一下,如system.out等。
4.咱们在包的最外层增长新的应用启动入口 —> Application
/** * @EnableAutoConfiguration:spring boot的注解,通常只用于主类, * 是无xml配置启动的关键部分,明确指定了扫描包的路径为其修饰的主类的包(这也就是为何主类要放在根包路径下的缘由) * * @ComponentScan 进行包的扫描,扫描路径由@EnableAutoConfiguration指定了 * * 主类要位于根包路径下,方便以后的扫描(We generally recommend that you locate your main application class in a root package above other classes.) * 主类要位于根包路径下(例如,com.xxx.firstboot),这是推荐作法,方便扫描 每个jar(即每个子项目)都要有一个主方法,用于启动该jar(也就是一个微服务) 在主类上添加注解@SpringBootApplication,该注解至关于添加了以下三个注解 @Configuration:该注解指明该类由spring容器管理 @EnableAutoConfiguration:该注解是无xml配置启动的关键部分 @ComponentScan:该注解指定扫描包(若是主类不是位于根路径下,这里须要指定扫描路径),相似于spring的包扫描注解 */ //same as @Configuration+@EnableAutoConfiguration+@ComponentScan @SpringBootApplication(exclude={DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,
args); } }
关于@SpringBootApplication注解的用法在注释中有说明
此时,项目的结构如图所示:
启动应用后访问http://localhost:8080/get
{"id":1,"username":"yangheng","password":"123"}
到此,基本的springboot框架就算搭建完成了。