springboot--bean交给容器
1、把bean交给springboot管理
springboot也是一个spring容器。把一个bean交给springboot的容器有三种方法,前两种是先把bean交给spring容器再把spring容器交给springboot容器,第三种是直接交给springboot容器。
1.1 @ImportResource
在resources下像往常一样编写xml配置文件,在springboot启动类加上@importResource注解并在value数组里指明配置文件的位置,即可把spring容器和springboot容器整合一起。
1.2 @Configuration
上一种方法的弊端是如果存在多个xml配置文件则需要在@ImportResource中引入多个注解。所以springboot推荐使用基于@Configuration注解的形式去替代xml文件来向spring容器添加bean。
从Spring3.0起@Configuration开始逐渐用来替代传统的xml配置文件。@Configuration继承自@Component,spring会把标注了@Configuration的对象管理到容器中。除此之外还要在某一个方法加上@Bean,该方法的返回对象被当做bean交给容器,该bean的名称为方法的名称。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
@AliasFor(
annotation = Component.class
)
String value() default "";
}
@Configuration
public class myAppConfig { @Bean
public helloService helloService(){
System.out.println("给容器添加组件");
helloService helloService = new helloService();
return helloService;
}
}
执行下列测试,控制台有相应的输出,并得到了helloService。
@Autowired
ApplicationContext applicationContext; @Test
public void test(){
helloService bean = applicationContext.getBean("helloService",helloService.class);
System.out.println(bean);
}
1.3 大杂烩
这种方式和传统的基于注解spring注入bean相同,在pojo类上使用@Component把该pojo对象交给spring容器,并使用注解如@Value为pojo对象的属性添加值,只不过在添加值方面springboot有些不同。
把person对象交给容器管理并为之设置初始值。
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<String> lists;
private Pet pet;
}
public class Pet {
private String name;
private Integer age;
}
首先要编写XX.propertites配置文件为相关属性指定值。
person.age=10
person.birth=1029/1/1
person.boss=false
person.last-name=wuwuwu
person.maps.k1=v1
person.maps.k2=v2
person.lists=l1,l2
person.pet.age=10
person.pet.name=gou
然后在Person上加上注解,告诉properties文件的位置和使用具体的前缀。springboot有一个默认的配置文件application.properties,如果默认配置文件中和自定义的配置文件有重合的部分,则默认配置文件会覆盖自定义配置文件。
@Component
@PropertySource(value = {"classpath:Person.properties"})
@ConfigurationProperties(prefix = "person")
除此之外可使用一个插件提高编写properties的效率。
<!--方便编写配置文件的插件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
springboot--bean交给容器的更多相关文章
- SpringBoot切换Tomcat容器,SpringBoot使用Jetty容器
SpringBoot切换Tomcat容器, SpringBoot修改为Jetty容器, SpringBoot使用undertow容器, SpringBoot使用Jetty容器 ============ ...
- springboot bean的循环依赖实现 源码分析
springboot bean的循环依赖实现 源码分析 本文基于springboot版本2.5.1 <parent> <groupId>org.springframework. ...
- SpringBoot切换Tomcat容器
SpringBoot默认的容器为Tomcat, 依赖包在spring-boot-starter-web下 Xml代码 <dependencies> <dependency> & ...
- 2、组件注册-@Configuration&@Bean给容器中注册组件
2.组件注册-@Configuration&@Bean给容器中注册组件 2.1 创建maven项目 spring-annotation pom.xml文件添加 spring-context 依 ...
- Springboot关于tomcat容器配置、三大组件配置、拦截器配置
原文地址:http://www.javayihao.top/detail/172 1.tomcat配置 Springboot默认使用的就是嵌入式servlet容器即tomcat,对于web项目,如果使 ...
- Spring-Boot使用嵌入式容器,那怎么配置自定义Filter呢
Listener.Filter和Servlet是Java Web开发过程中常用的三个组件,其中Filter组件的使用频率最高,经常被用来做简单的权限处理.请求头过滤和防止XSS攻击等.如果我们使用的是 ...
- SpringBoot框架——从SpringBoot看IoC容器初始化流程之方法分析
目录 一.概观Spring Boot 二.Spring Boot应用初始化 2.1 初始化入口 2.2 SpringApplication的run方法 2.3 方法分析 三.容器创建与初始化 3.1 ...
- 【Spring注解开发】组件注册-使用@Configuration和@Bean给容器中注册组件
写在前面 在之前的Spring版本中,我们只能通过写XML配置文件来定义我们的Bean,XML配置不仅繁琐,而且很容易出错,稍有不慎就会导致编写的应用程序各种报错,排查半天,发现是XML文件配置不对! ...
- SpringBoot嵌入式Servlet容器
SpringBoot默认是将Tomcat作为嵌入式的servlet容器. 问题: 如何修改嵌入式的servlet容器? 1)在配置文件中设置对应的属性值 server.port=8081 # Tomc ...
随机推荐
- C#时间、日期 的操作
原文地址:http://zhidao.baidu.com/link?url=q-0No1LWfdyqQKFBg8RN5h0K-X0VygSbFI4sR8lBPwDExkIIzXQivyMKqX7V1y ...
- 如何用ABP框架快速完成项目(3) - 为什么要使用ABP和ABP框架简介
首先先讲为什么要使用ABP? 当然是因为使用ABP可以快速完成项目啦. 时间就是金钱, 效率就是生命嘛 有了ABP, 你就节省了写如下模块的时间: CRUD数据库基本操作 校验 异常处理 日志 权 ...
- 实战 | Android中文图混排时文图的居中对齐 FontMetrics以及自定义ImageSpan实现
这个标题有点长,乍一看这么个标题你可能没明白啥意思,且听我慢慢道来. 公司的项目中新增了一个“心动” 的功能,用户初次使用时需要给一个引导页,就是下面图中的这个样子(这就是做完之后的效果了). 在上图 ...
- Python 多线程并发程序设计与分析
多线程并发程序设计与分析 by:授客 QQ:1033553122 1.技术难点分析与总结 难点1:线程运行时,运行顺序不固定 难点2:同一段代码,再不加锁的情况下,可能被多个线程同时执行,这会造成很多 ...
- Ubuntu添加新分区
1.查看分区 ~$ sudo fdisk -l 2.添加分区 ~$ fdisk /dev/sda 3.输入m查看帮助 ~$ m 4.输入n新建分区,即添加分区 ~$ n 这里会出现设置分区大小 5.输 ...
- Android 源码编译之旅
目录 前言 背景 安装软件 正文 Mac 分区 移动硬盘分区 Repo 下载源码 编译 源码导入 Android Studio 查看 碰到的问题 Could not find a supported ...
- sublime使用Package Control不能正常使用的解决办法
标签: Sublime作为一款非常优秀的编辑器,套用中学语文课本里一篇讲梁启超的文章里形容梁启超的一句话,就是“短小精悍”.说它“短小”,是因为它的轻量级:说它“精悍”,则得益于它那包罗万象以适用于任 ...
- Java的内存 -JVM 内存管理
一.综述 如果你学过C或者C++,那么你应该感受过它们对内存那种强大的掌控力.但是强大的能力往往需要更强大的控制力才能保证能力不被滥用,如果滥用C/C++的内存管理那么很容易出现指针满天飞的情况,不出 ...
- x3D 下载以及如何使用原版NetBeans IDE 来搭建x3d编辑环境
安装前: Overview X3D-Edit version 3.3 standalone application and Netbeans plugin are available and read ...
- 通过linkserver不能调远程表值函数
Question: 通过linkserver调远程表值函数报错如下 Solution: 注意:查询语句中的[SDS_NONEDI].[DBO].ddddd(),不能加server名[sdsc2-1]. ...