SpringBoot初解

SpringBoot是什么

从本质上来说,Springboot是一个专注于框架的框架。Spring Boot就是对各种框架的整合,让他们集成在一起更加简单。目前ssm框架还是比较常用的,其中ss指的无非就是Spring和SpringMVC,我们可以简单的认为“Spring Boot >= Spring + SpringMVC”。Spring Boot的配置极其简单,可以让你不用或者只需要很少的配置就可以快速运行项目。

Spirng Boot的优缺点

优点

  1. 快速构建项目
  2. 对主流开发框架的无配置集成

    spring-boot-starter-web启动器自动依赖其它组件,减少了maven配置

  3. 项目可以独立运行,无需外部依赖Servlet容器(自带一个Tomcat)

    内嵌离各种servlet容器,Tomcat,Jetty等,现在不用打成war包部署到容器中,Spring Boot只要打成一个可执行的jar包就能独立运行了(java -jar .jar),所有的依赖都在一个jar包内。可以以下命令修改tomcat的端口号:(java -jar .jar –server.port=9090)

  4. 提供运行时的应用监控
  5. 极大提高开发部署效率(还是因为配置简单)
  6. 与云计算天然集成

缺点

  1. Spring Boot作为一个微框架,离微服务的实现还是有距离的。没有提供相应的服务发现和注册的配套功能,自身的acturator所提供的监控功能,也需要与现有的监控对接。没有配套的安全管控方案,对于REST的落地,还需要自行结合实际URI的规范化工作。

快速入门

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

  • @Configuration 和 @Bean
    Spring的Java配置方式时通过@Configuration和@Bean来实现的
    • @configuration作用与类上,相当于一个xml配置文件
    • @Bean作用与方法上,相当于xml中的
  • 例子
    • 这是一个简单模拟从数据库取User数据的Dao类(注意代码,它没有使用过任何注解,也就是说UserDao目前没有交给Spring容器管理)
1
2
3
4
5
6
7
8
9
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;
}
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Service
public 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));
}
}

}

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

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

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

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

Spring boot注解

SpringBootApplication

是Spring boot项目的核心注解,主要目的是开启自动配置。后续详解原理。

@RestController

该注解等价于@Controller+@ResponseBody的结合,使用这个注解的类里面的方法都是以json格式输出。