Spring Boot系列2
1 Spring Boot的快速使用
1 创建Spring Boot项目
打开IDEA软件,点击File->New->Project,选择Spring Initializr项,
按照上图选择好配置,点击Next按钮
按照上述选择项目配置,点击Next按钮.
选择Web中Spring Web,下一步选择代码存放地址,完成项目的创建.
2 Spring Boot项目入口类
@SpringBootApplication
public class SpringbootdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootdemoApplication.class, args);
}
}
在项目启动类中,添加打印语句
@SpringBootApplication
public class SpringbootdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootdemoApplication.class, args);
System.out.println("项目成功启动");
}
}
启动项目,查看控制台日志:
创建一个控制器类:
@RestController
public class HelloWorldController {
@GetMapping("/query")
public String query(@RequestParam("username") String username, @RequestParam("password")String password){
return "<h1>"+"username"+username+"password"+password+"</h1>" ;
}
}
重新启动项目,在浏览器输入:
http://localhost:8080/query?username=1234&password=5678
3 注解@SpringBootApplication
启动类上注解@SpringBootApplication
是Spring Boot的启动项,点进注解中,发现该注解包括三个了@SpringBootConfiguration
,@EnableAutoConfiguration
和@ComponentScan
源码部分:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
-
@SpringBootConfiguration 配置类注解
-
@EnableAutoConfiguration 启动自动配置注解
-
@ComponentScan 组件扫描注解
1 注解@SpringBootConfiguration
源码部分:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
@Indexed
public @interface SpringBootConfiguration {
@AliasFor(annotation = Configuration.class)
boolean proxyBeanMethods() default true;
}
@SpringBootConfiguration
注解里面封装了@Configuration
注解.
@Configuration
注解里面是@Component
注解.
代码如下:
@Target({
ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
@AliasFor(
annotation = Component.class
)
String value() default "";
boolean proxyBeanMethods() default true;
}
@Component
注解的作用,就是把普通的Java对象实例化到Spring容器中,类似于XML配置文件中的bean对象(如下图)
<bean id="user" class="com.cf.entity.User"/>
综上可知: @Configuration
注解表示这个是Spring配置文件,和XML配置文件效果一样.
Spring容器可以扫描我们添加@Component注解的类,Bean的注册逻辑在类org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider#registerDefaultFilters的方法里面
2 注解@EnableAutoConfiguration
部分源码:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
...
注解@EnableAutoConfiguration
使用@Import导入了@Configuration
标注的配置类.
@Import用来整合所有在@Configuration注解中定义的Bean配置
使用@EnableAutoConfiguration注解可以启用Spring应用程序上下文的自动配置.
Spring Boot默认扫描的包路径是入口类所在的根包及其子包.
3 注解@ComponentScan
注解@ComponentScan
和XML配置文件中的<context:component-scan>
等价.
@ComponentScan
的处理类是org.springframework.context.annotation.ConfigurationClassParser.该注解指导Spring去相应的package下面扫描Spring注解的类,通过反射注册到Bean容器中.
4 XML配置和注解配置
Spring中提供了两种Bean配置方式:
- XML配置
- 注解配置
1 XML配置
优点: 可以方便调整Bean的管理模式,按照规范,可以不用费时处理Bean之间的依赖.
缺点: 系统很大,功能越复杂,XML配置文件越多,关系容易错乱.
2 注解配置
优点: 配置方便,不需要知道系统的对象创建,只需要取用即可
缺点: 修改和删除Bean对象时,不能确认其他Bean是否依赖此.(因为我们不负责维护,是由容器负责管理Bean对象)
2 总结
关于Spring Boot的使用简介如上, Spring Boot在开发方面,很好实现了约定大于配置
的理念, 可以非常快速的搭建一个项目,并进行快速开发. 这种编程理念,值得我们好好学习.