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致力于在蓬勃发 ...
随机推荐
- BZOJ 1369: [Baltic2003]Gem(树形dp)
传送门 解题思路 直接按奇偶层染色是错的,\(WA\)了好几次,所以要树形\(dp\),感觉最多\(log\)种颜色,不太会证. 代码 #include<iostream> #includ ...
- [USACO09DEC] Video Game Troubles
背包DP:有依赖的背包问题 #include <cstdio> #include <cstdlib> #include <cmath> #include <c ...
- Linux二进制程序安装使用
下载好的二进制,压缩包解压,或者直接是二进制. 放到想要的目录 在 /etc/environment 双引号前面添加程序路径 以:开头,\结尾可以换行 接下来修改sudo ,不然sudo会找不到 以下 ...
- Mac os下设置国内镜像加速站
无法忍受国外pip 仓库的龟速地址,安利一波国内高速镜像地址... 首推阿里云 repository 马爸爸 I ❤ u $ vim ~/.pip/pip.conf 在config中做如下配置: [ ...
- 【SpringBoot】 理解Spirng中的IOC原理
前言 前文已经介绍了Spring Bean的生命周期,在这个周期内有一个重要的概念就是: IOC容器 大家也知道IOC是Sping 的重要核心之一,那么如何理解它呢,它又是产生什么作用呢?本文就IOC ...
- pdf兼容问题不能正常预览
刚开始以为是这个PDF文件过大导致的 发现其他更大的文件也能正常显示 考虑到PDF的兼容问题 由于导出的PDF格式不兼容导致,如果有这种情况,可以尝试用word2016打开pdf文件,再导出成pdf.
- Java8 新特性学习 Lambda表达式 和 Stream 用法案例
Java8 新特性学习 Lambda表达式 和 Stream 用法案例 学习参考文章: https://www.cnblogs.com/coprince/p/8692972.html 1.使用lamb ...
- flex:1 内容不要撑开
.content { flex: 1; overflow: hidden: }
- Codeforces Breaking Good
Breaking Good time limit per test 2 seconds memory limit per test 256 megabytes Breaking Good is a n ...
- Pycharm 激活码2017最新
BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...