最近项目用到了SpringBoot,对其没有xml配置就可以运行感到非常神奇。之前没有细细追究。
说到 SpringBoot,需要提一下:
一、Spring的历史版本与配置方式
1. Spring 1.x
完全是 xml 的配置。
缺点:随着项目的扩大,xml越来越多,而且需要对xml分类。
2. Spring 2.x
在 JDK 1.5 更新的时代,可以使用注解。Spring 2.X 开始使用注解。
那么问题是:使用xml?还是使用注解?
得出最佳实践:
应用的基本配置用xml,业务用注解。
3. Spring 3.x
推荐使用 java 代码的配置注解,取代 xml
@Configuration, @Bean
4. Spring 4.x
SpringBoot 诞生
二、Spring 4.x @Component 与 @Bean 的区别
https://stackoverflow.com/questions/10604298/spring-component-versus-bean
@Component 是加在类上;
@Bean 是加在方法上;而且可以手动指定生成哪个类的具体实例。
三、Spring 4.x @Resource 与 @Autowired 的区别
https://stackoverflow.com/questions/4093504/resource-vs-autowired
@Resource是 By Name 来匹配的,没有找到对应的名字时则调用 @Autowired。
名字可以用 @Resource(name="blah")属性指定,缺省则使用变量名。
@Autowired是 By Type 来匹配的。常与 @Autowired @Qualifier("blah") 结合使用。
依赖注入的第三种方式:
@Qualifier
@Retention(RUNTIME)
public @interface YourQualifier {}
@YourQualifier
@Component
public class SomeBean implements Foo { .. }
And then
@Inject @YourQualifier private Foo foo;
@RESOURCE VS @AUTOWIRED VS @INJECT
ANNOTATION | PACKAGE | SOURCE |
@Resource | javax.annotation | Java |
@Inject | javax.inject | Java |
@Qualifier | javax.inject | Java |
@Autowired | org.springframework.bean.factory | Spring |
@Resource
@Qualifier("person")
private Party party;
@Autowired
@Qualifier("person")
private Party party;
@Inject
@Qualifier("person")
private Party party;
https://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/
四、Spring 4.x @PropertySources 与 @PropertySource
https://www.mkyong.com/spring/spring-propertysources-example/
Some enhancements on Spring 4.
- Introduces new @PropertySources to support Java 8 and better way to include multiple properties files.
@Configuration
@PropertySources({
@PropertySource("classpath:config.properties"),
@PropertySource("classpath:db.properties")
})
public class AppConfig {
//...
}
- Allow @PropertySource to ignore the not found properties file.
@Configuration
@PropertySource("classpath:missing.properties")
public class AppConfig {
//...
}
If missing.properties is not found, the system is unable to start and throws FileNotFoundException
Caused by: java.io.FileNotFoundException:
class path resource [missiong.properties] cannot be opened because it does not exist
In Spring 4, you can use ignoreResourceNotFound to ignore the not found properties file
@Configuration
@PropertySource(value="classpath:missing.properties", ignoreResourceNotFound=true)
public class AppConfig {
//...
}
@PropertySources({
@PropertySource(value = "classpath:missing.properties", ignoreResourceNotFound=true),
@PropertySource("classpath:config.properties")
})
-
分享到:
相关推荐
### Spring Boot与Spring的Java配置方式详解 #### 一、Spring Boot项目结构及配置 **Spring Boot项目**的构建通常采用Maven或Gradle作为构建工具。为了方便开发者使用Spring Boot提供的特性,官方建议将Spring ...
Spring框架的发展经历了多个阶段,从Spring 1.x到Spring 4.x,逐渐从XML配置转向注解和Java配置。 1. **Spring 1.x时代**:在这个阶段,Spring主要依赖XML文件来配置Bean,随着项目规模的增长,XML配置文件变得庞大...
Spring Boot与Quartz的结合提供了便捷的配置方式,特别是通过YAML(YAML Ain't Markup Language)配置文件,使得配置更加直观和灵活。以下将详细介绍如何在Spring Boot应用中使用YAML文件配置Quartz定时任务,以及...
- SpringBoot通过条件注解实现自动化配置,无需XML配置,利用Spring 4.x的Java配置和注解配置组合。 2. **SpringBoot优点** - 快速构建项目,减少初始化工作。 - 项目可以独立运行,无需外部Servlet容器。 - ...
1. **配置简化**:Spring Boot通过大量的默认配置和starter POMs,使得开发者不再需要手动编写大量的XML配置文件,而是采用Java配置或者基于注解的配置。 2. **模块化**:Spring Boot鼓励模块化的应用设计,每个...
- **SpringBoot** 是为了简化Spring应用程序的初始搭建以及开发过程而诞生的,它基于约定优于配置的原则,极大地减少了常规配置工作。 - **SpringCloud** 是一套微服务解决方案,它构建于SpringBoot之上,提供了...
4. **自动配置**:Spring Boot 会根据类路径中的类自动配置相应的 Bean,如发现 `@SpringBootApplication` 注解,将自动配置 Spring MVC 等。 5. **应用监控**:通过 Actuator 模块,Spring Boot 提供了 HTTP、SSH ...
D2ADADADMIN.D2ADADMIN.D2ADADADMIN.D2ADADMIN.D2ADADMIN.D2ADADMIN.D2ADADMIN.D2ADMIN.D2.D2.D2.SpringBoot2.0.5.5.release.release.release.release.releas2.release.releas1.sr1.sr1.sr1.spr春云finchley.sr1.sr1...
SpringBoot2 是一个流行的 Java 框架,用于构建基于 Web 的应用程序,而 Spring Session 是一个用于管理会话的框架。本文将详细介绍如何使用 Spring Session 在 SpringBoot2 中实现集群。 什么是 Spring Session ...
SpringBoot以其简洁的配置和强大的功能,已经成为Java领域开发Web应用的首选框架。而WebSocket作为HTML5提供的一种在单个TCP连接上进行全双工通信的协议,可以实现服务器与客户端的双向通信,极大地提高了实时性。...
3.2 主启动类:作为应用的入口,一般会包含@SpringBootApplication注解,启动Spring Boot的自动配置和Spring MVC。 3.3 控制器:使用@RestController注解的类,处理HTTP请求,返回JSON或其他类型的数据。 3.4 ...
* 零配置:Spring4.x 出现之后提倡使用 Java 配置和注解配置组合,而 Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置,所有的注入都依赖与条件注解的原理进行注入,这是 Spring4.x 出现之后的新特性。...
在当今信息化社会,教育领域的资源共享愈发重要,基于SpringBoot的校园资料分享平台正是为了解决这一需求而诞生的。本平台利用先进的Java技术和SpringBoot框架,构建了一个高效、便捷的资料分享系统,旨在提升教育...
Spring 框架自诞生以来一直是 Java 领域中最为流行的框架之一,它提供了完整的轻量级企业应用解决方案。随着云计算和微服务架构的发展,Spring 官方团队为了适应新时代的需求,推出了 SpringBoot 这一全新的框架。 ...
SpringBoot 是一个基于 Spring 框架的轻量级开发工具,它的主要目的是为了简化 Java 应用程序的初始设置和配置过程。Spring 框架最初设计的初衷是为了应对企业级应用开发的复杂性,它引入了依赖注入(IoC)和面向切...
总的来说,SpringBoot通过自动化配置、起步依赖和内嵌服务器等特性,为开发者提供了高效、简洁的Spring应用开发环境,降低了入门门槛,提高了开发效率,是现代Java企业级应用开发的首选框架之一。
它的核心特性是可以自动配置 Spring 框架,使得开发者能够快速地创建独立运行的、生产级别的基于 Spring 的应用程序。在本资料中,包含了一个PPT讲解和一份入门代码,帮助初学者快速理解并上手 Spring Boot。 首先...
3. **自动配置**:SpringBoot的核心特性之一,讲解如何利用@ConfigurationProperties、@EnableAutoConfiguration等注解实现零配置或者最少配置。 4. **内嵌Servlet容器**:详述SpringBoot如何内置Tomcat、Jetty等...
SpringBoot基础是Java开发中的一个热门话题,它简化了基于Spring的应用程序的创建和配置过程。SpringBoot的核心理念是“约定优于配置”,旨在提供一种快速、便捷的方式来构建生产级别的Java应用。下面我们将深入探讨...