Java方式bean的注入以及自动配置
Java配置
Java配置的本质上,就是使用一个Java类去代替xml配置,这种配置方式在目前最主流的Spring Boot中得到了广泛的使用。
1、引入相关Spring相关依赖
2、创建Java配置类:
/**
* 这是一个Java配置类,它的作用类似于applicationContext.xml配置文件
* @author 叶小陌
*
*/
@Configuration
public class JavaConfig {
/**
* 返回一个JavaBean的方法就类似于applicationContext.xml中的一个bean标签
* <bean class="com.sxt.bean.Book" id="book"/>
* @return
* 默认情况下,id就是方法名,可以通过@bean注解的value或者name属性自定义方法名
*/
@Bean(name="book")
public Book getBook(){
return new Book();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
3、加载Java配置
public class Main1 {
ApplicationContext ac;
@Test
public void test() {
Book book = (Book) ac.getBean(Book.class);
System.out.println(book);
}
@Before
public void before(){
ac = new AnnotationConfigApplicationContext(JavaConfig.class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
自动配置
xml 配置实现
xml配置,主要通过四个注解,这四个注解,目前来说,功能是一样的:
@Component,一般用在身份不明确的组件上
@Service,一般用在Service层
@controller,一般用在控制层
@Repository,一般用在数据库访问层
然后在xml文件中配置自动扫描:
<context:component-scan base-package="com.sxt.bean"/>
1
如果有多个包需要扫描,多个包使用“,”隔开,也可以直接配置扫描父包。
还可以配置扫描某个注解,如下:
<context:component-scan base-package="com.sxt" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
1
2
3
use-default-filters表示使用使用spring默认提供的过滤器,false表示不使用,true则表示使用。
一般来说,true结合exclude-filter标签使用,表示除去某个注解
false结合include标签使用,表示包含某个注解
注意:Component是另外三个注解(Service、Controller、Repository)的父类。
Java配置实现
Java配置和xml配置基本一致,唯一不同的地方就是包扫描的方式。
四个注解是一样的。
包扫描是通过@ComponentScan来实现:
@Configuration
@ComponentScan("com.sxt.bean")
public class JavaConfig {
}
1
2
3
4
Java配置一样可以实现精确的包扫描:
@Configuration
@ComponentScan(value="com.sxt.bean",useDefaultFilters=false,includeFilters={
@ComponentScan.Filter(type=FilterType.ANNOTATION,value=Service.class)
})
public class JavaConfig {
}
1
2
3
4
5
6
---------------------
Java方式bean的注入以及自动配置的更多相关文章
- [No0000105]java sdk 开发环境变量powershell 自动配置脚本
# 设置Java SDK 环境变量 $softwares = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Unin ...
- 面试题: SpringBoot 的自动配置原理
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 3.Spring Boot 的自动配置原理 package com.mmall; import org. ...
- SpringBoot自动配置的实现原理
之前一直在用SpringBoot框架,一直感觉SpringBoot框架自动配置的功能很强大,但是并没有明白它是怎么实现自动配置的,现在有空研究了一下,大概明白了SpringBoot框架是怎么实现自动配 ...
- SpringBoot Beans管理和自动配置
原 SpringBoot Beans管理和自动配置 火推 02 2017年12月20日 21:37:01 阅读数:220 SpringBoot Beans管理和自动配置 @SpringBootAppl ...
- springboot web项目创建及自动配置分析(thymeleaf+flyway)
@ 目录 源码分析 webjars thymeleaf thymeleaf语法 springmvc 启动配置原理 集成flyway插件 springboot 创建web项目只需要引入对应的web-st ...
- Spring Boot之实现自动配置
GITHUB地址:https://github.com/zhangboqing/springboot-learning 一.Spring Boot自动配置原理 自动配置功能是由@SpringBootA ...
- Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入
本节主要内容: 1.实例化Spring容器示例 2.利用Spring容器创建JavaBean对象 3.如何控制Bean实例化 4.利用Spring实现bean属性sett ...
- Spring4学习回顾之路03—XML配置Bean ,依赖注入的方式
配置Bean的形式可以基于XML文件的方式,也可以基于注解的方式,而Bean的配置方式可以通过全类名(反射),通过工厂方式和FactoryBean. XML形式 <?xml version=&q ...
- SpringBoot入门一:基础知识(环境搭建、注解说明、创建对象方法、注入方式、集成jsp/Thymeleaf、logback日志、全局热部署、文件上传/下载、拦截器、自动配置原理等)
SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,SpringBoot致力于在蓬勃发 ...
随机推荐
- Toposort(拓扑排序)dfs递归模板
最近刷了几题拓扑排序的题,记录一下拓扑排序 在有向图中,并且按照一定的规则(题目所给的规则)排序.如果图中出现了有向环的话就无法排序了. int gap[maxn][maxn];//记录下有向边 in ...
- nginx中如何设置gzip(总结)
nginx中如何设置gzip(总结) 一.总结 一句话总结: 真正用的时候,花一小点时间把gzip的各个字段的意思都看一下,会节约大量时间 直接gzip on:在nginx的配置中就可以开启gzip压 ...
- outlook使用inline style回复邮件
Reply with inline comments within the original message text When you reply to email messages in Outl ...
- CSS-inline-block 间隙
间隙产生的原因是`inline-block`对外是`inline`,对内是`block`.`inline`会将连续的空白符解析为一个空格(如:下面示例的两个`li`之间的后面的换行空格).取消间隙的方 ...
- 测开之路四十一:常用的jquery函数
jQuery选择器菜鸟教程:https://www.runoob.com/jquery/jquery-selectors.html 引用jquery2.1.1标签:<script src=&qu ...
- UIsearchBar 自定义样式
对于修改输入框圆角 的需求, 可以通过修改搜索框背景图片的方式设置. - (void)setSearchFieldBackgroundImage:(nullable UIImage *)backgro ...
- sublime text3中使用PHP编译系统
前言: php是服务器端语言,我们平时写的php代码想要查看运行结果的话,通常会搭建web服务器,然后通过浏览器访问.而对于有时候一些简单的测试代码来说,此过程就有点繁琐了.编译系统的好处是,可以让我 ...
- 【题解】LCIS
题目描述 给定两个整数序列,写一个程序求它们的最长上升公共子序列. 输入格式 每个序列用两行表示,第一行是长度L,第二行是该序列. 输出格式 在第一行,输出该LCIS的长度.第二行,输出该LCIS. ...
- elementUI table宽度自适应fit
:fit='true' 或者直接为 fit
- 饿汉单例模式 and 懒汉单例模式
饿汉单例模式:主要就是利用static关键字,在类加载的时候生成实例,调用效率高 但是如果一直没有调用getInstance方法的话,就会造成资源浪费 具体实现如下: class Single{ pr ...