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的注入以及自动配置的更多相关文章

  1. [No0000105]java sdk 开发环境变量powershell 自动配置脚本

    # 设置Java SDK 环境变量 $softwares = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Unin ...

  2. 面试题: SpringBoot 的自动配置原理

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 3.Spring Boot 的自动配置原理 package com.mmall; import org. ...

  3. SpringBoot自动配置的实现原理

    之前一直在用SpringBoot框架,一直感觉SpringBoot框架自动配置的功能很强大,但是并没有明白它是怎么实现自动配置的,现在有空研究了一下,大概明白了SpringBoot框架是怎么实现自动配 ...

  4. SpringBoot Beans管理和自动配置

    原 SpringBoot Beans管理和自动配置 火推 02 2017年12月20日 21:37:01 阅读数:220 SpringBoot Beans管理和自动配置 @SpringBootAppl ...

  5. springboot web项目创建及自动配置分析(thymeleaf+flyway)

    @ 目录 源码分析 webjars thymeleaf thymeleaf语法 springmvc 启动配置原理 集成flyway插件 springboot 创建web项目只需要引入对应的web-st ...

  6. Spring Boot之实现自动配置

    GITHUB地址:https://github.com/zhangboqing/springboot-learning 一.Spring Boot自动配置原理 自动配置功能是由@SpringBootA ...

  7. Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入

    本节主要内容:       1.实例化Spring容器示例    2.利用Spring容器创建JavaBean对象    3.如何控制Bean实例化    4.利用Spring实现bean属性sett ...

  8. Spring4学习回顾之路03—XML配置Bean ,依赖注入的方式

    配置Bean的形式可以基于XML文件的方式,也可以基于注解的方式,而Bean的配置方式可以通过全类名(反射),通过工厂方式和FactoryBean. XML形式 <?xml version=&q ...

  9. SpringBoot入门一:基础知识(环境搭建、注解说明、创建对象方法、注入方式、集成jsp/Thymeleaf、logback日志、全局热部署、文件上传/下载、拦截器、自动配置原理等)

    SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,SpringBoot致力于在蓬勃发 ...

随机推荐

  1. Toposort(拓扑排序)dfs递归模板

    最近刷了几题拓扑排序的题,记录一下拓扑排序 在有向图中,并且按照一定的规则(题目所给的规则)排序.如果图中出现了有向环的话就无法排序了. int gap[maxn][maxn];//记录下有向边 in ...

  2. nginx中如何设置gzip(总结)

    nginx中如何设置gzip(总结) 一.总结 一句话总结: 真正用的时候,花一小点时间把gzip的各个字段的意思都看一下,会节约大量时间 直接gzip on:在nginx的配置中就可以开启gzip压 ...

  3. outlook使用inline style回复邮件

    Reply with inline comments within the original message text When you reply to email messages in Outl ...

  4. CSS-inline-block 间隙

    间隙产生的原因是`inline-block`对外是`inline`,对内是`block`.`inline`会将连续的空白符解析为一个空格(如:下面示例的两个`li`之间的后面的换行空格).取消间隙的方 ...

  5. 测开之路四十一:常用的jquery函数

    jQuery选择器菜鸟教程:https://www.runoob.com/jquery/jquery-selectors.html 引用jquery2.1.1标签:<script src=&qu ...

  6. UIsearchBar 自定义样式

    对于修改输入框圆角 的需求, 可以通过修改搜索框背景图片的方式设置. - (void)setSearchFieldBackgroundImage:(nullable UIImage *)backgro ...

  7. sublime text3中使用PHP编译系统

    前言: php是服务器端语言,我们平时写的php代码想要查看运行结果的话,通常会搭建web服务器,然后通过浏览器访问.而对于有时候一些简单的测试代码来说,此过程就有点繁琐了.编译系统的好处是,可以让我 ...

  8. 【题解】LCIS

    题目描述 给定两个整数序列,写一个程序求它们的最长上升公共子序列. 输入格式 每个序列用两行表示,第一行是长度L,第二行是该序列. 输出格式 在第一行,输出该LCIS的长度.第二行,输出该LCIS. ...

  9. elementUI table宽度自适应fit

    :fit='true' 或者直接为 fit

  10. 饿汉单例模式 and 懒汉单例模式

    饿汉单例模式:主要就是利用static关键字,在类加载的时候生成实例,调用效率高 但是如果一直没有调用getInstance方法的话,就会造成资源浪费 具体实现如下: class Single{ pr ...