Spring Boot:(一)快速入门

来源:互联网 发布:关闭手机数据连接 编辑:程序博客网 时间:2024/06/05 16:34

一、Spring Boot

久闻Spring Boot大名,这两天终于得空,学习了一把,发觉Spring Boot确实好用,那Spring Boot到底是什么,又是怎么好用呢?

什么是Spring Boot

目前ssm框架还是比较常用的,其中的ss指的无非就是Spring 和 SpringMVC,我们可以简单的认为 “Spring Boot ≥ Spring + SpringMVC”,没错,用了Spring Boot中涵盖了Spring和SpringMVC等大量常用开发配置,而且Spring Boot的配置极其简单,可以让你不用或者只需要很少的Spring配置就可以让你的项目快速运行起来。

Spring Boot的优缺点

优点

  1. 快速构建项目
  2. 对主流开发框架的无配置集成
  3. 项目可独立运行,无须外部依赖Servlet容器(Spring Boot默认自带了一个Tomcat)
  4. 提供运行时的应用监控
  5. 极大地提高了开发、部署效率
  6. 与云计算的天然集成

二、快速入门

1、Spring的Java配置方式

上面已经提到了,使用Spring Boot,可以让你不用或者只需要很少的Spring配置就可以让你的项目快速运行起来,说的就是使用代码注解来取代xml配置。其实从Spring3.x开始就已经提供了java配置方式,使用java配置方式可以更好的理解你配置的Bean,而如今的Spring4.x更是推荐java配置方式,java配置方式可以完全替代xml配置,下面就先来看看两个最基本的注释:

1)@Configuration 和 @Bean

Spring的java配置方式是通过@Configuration 和 @Bean这两个注释实现的:

  • @Configuration 作用于类上,相当于一个xml配置文件
  • @Bean 作用于方法上,相当于xml配置中的

2)小示例

该示例将通过java配置方式配置Spring,实现Spring IOC功能。

这是一个简单的模拟从数据库获取User数据的Dao类(注意,它并没有使用任何注解,也就是说UserDao目前并没有交给Spring容器管理)。

public class UserDao {    public List<String> queryUserList() {        List<String> list = new ArrayList<>();        for (int i = 0; i < 10; i++) {            list.add("User " + i);        }        return list;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这是一个最最常见的Service,通过注入UserDao,使用UserDao的方法获取用户数据。

@Servicepublic class UserService {    @Autowired    UserDao userDao;    public void getUserList() {        List<String> list = userDao.queryUserList();        for (int i = 0; i < list.size(); i++) {            System.out.println(list.get(i));        }    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

从这里开始就跟以往的Spring开发不一样了,这个类使用了2个新的注解,其中@Configuration表明该相当于Spring的一个xml配置文件,@Bean将一开始的UserDao配置给Spring管理.

@Configuration// 通过注解来表明该类是一个Spring的配置,相当于一个xml文件public class SpringConfig {    @Bean// 这里要注意,方法名"getUserDao"将作为UserDao在容器中的id    public UserDao getUserDao() {        return new UserDao();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

接下来就是获取Spring容器,从容器中拿到UserService,并调用其获取用户数据的方法,代码如下:

public class Test {    public static void main(String[] args) {        AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext(SpringConfig.class);        UserService userService = (UserService) acac.getBean("userService");        userService.getUserList();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

像普通的java程序一样,直接运行Test类中的main方法即可在控制台看到用户数据输出了。

细心的你应该发现了,以往获取Spring容器使用到的类要么是ClassPathXmlApplicationContext 或是 FileSystemXmlApplicationContext,但Spring Boot使用的却是AnnotationConfigApplicationContext,原因也好理解,因为我们Spring Boot使用的是java配置的方式,而以往使用的是Spring的xml配置方式

2、第一个Web应用

通过上面的示例,我们已经知道了java配置方式是怎么回事了,那接下来便正式开始使用Spring Boot来开发我们的第一个web应用了.

1)pom.xml配置

设置spring boot的parent

<parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>1.5.2.RELEASE</version></parent>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

说明:Spring boot的项目必须要将parent设置为spring boot的parent,该parent包含了大量默认的配置,大大简化了我们的开发。

导入spring boot的web支持

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

添加Spring boot的插件

<plugin>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-maven-plugin</artifactId></plugin>
  • 1
  • 2
  • 3
  • 4
  • 5

通过上面简单的3步配置,Spring Boot就配置完毕了,相比以往的Spring、SpringMVC配置是不是要简洁的多呢?

2)小示例

@SpringBootApplication// Spring Boot项目的核心注解,主要目的是开启自动配置@Controller//标明这是一个SpringMVC的Controller控制器public class HelloApplication {    @RequestMapping("/hello")    @ResponseBody    public String hello() {        return "hello world";    }    // 在main方法中启动一个应用,即:这个应用的入口    public static void main(String[] args) {        SpringApplication.run(HelloApplication.class, args);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

一般Spring Boot的Web应用都有一个xxxApplication类,并使用@SpringBootApplication注解标记,作为该web应用的加载入口。此外,还需要在main方法中(可以是任意一个类)使用SpringApplication.run(xxxApplication.class, args)来启动该web应用。

运行HelloApplication中的main()方法,启动该web应用后,在地址栏输入”http://localhost:8080/hello“,就可以看到输出结果了。

3)运行报错

如果你项目中没有其他配置,那在运行这个简单的项目时一般是不会报错的,但如果很不幸你第一次运行就报错的话,也不用着急,大部分问题百度即可,本人在启动项目过程中遇到就”Cannot determine embedded database driver class for database type NONE”这样的错误,这样就记录一下,报错截图如下:

原因是:springboot启动时会自动注入数据源和配置jpa。

解决方法:在@SpringBootApplication中排除其注入

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})

所以,上面的代码修改如下即可:

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})@Controllerpublic class HelloApplication {    ...}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

三、待解疑惑

到这里是不是已经大概感觉到了Spring Boot的高效和简洁了呢?配置就是如此简单,功能就是如此强大,但通过上面一系列的讲解,你是不是也产生一些疑惑呢,比如:

  1. Spring Boot的WEB应用默认端口就是8080,那这个端口要怎么修改呢?
  2. 为什么会出现”Cannot determine embedded database driver class for database type NONE”这样的错误?(或者说为什么springboot启动时会自动注入数据源和配置jpa)
  3. 为什么@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})就可以解决”Cannot determine embedded database driver class for database type NONE”这样的错误呢?
  4. 既然Spring Boot的WEB应用默认使用的是自带的Tomcat,那要怎么部署到外部的Servlet容器呢?
原创粉丝点击