Spring/Springboot——JavaConfig
1、认识JavaConfig
JavaConfig是Spring的一个子项目,在Spring4之后成为一个核心功能
JavaConfig中使用的注解:
@Configuration
在类上打上这一标签,表示这个类是配置类
@ComponentScan
相当于xml的
<context:componentscan basepakage=""/>
@Import(MyConfig2.class)
导入其他的配置类,合并配置信息,相当于xml中的
<import resource="xxx.xml"/>
@Bean
bean的定义,相当于xml的
<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
@EnableWebMvc
相当于xml的
<mvc:annotation-driven/>
@ImportResource
相当于xml的
<import resource="applicationContext-cache.xml"/>
@PropertySource
spring 3.1开始引入,它是基于java config的注解,用于读取properties文件
@Profile
spring3.1开始引入,一般用于多环境配置,
激活时可用@ActiveProfiles注解,@ActiveProfiles("dev")
等同于xml配置
<beans profile="dev">
<bean id="beanname" class="com.pz.demo.ProductRPC"/>
</beans>
<!--激活该profile spring.profiles.active,也可设置默认值 spring.profiles.default-->
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value>
</context-param>
XML配置唯一的问题是,只有在运行时环境时你才能发现各种配置及语法错误,但是如果使用JavaConfig的方式的话,它会在编码时提示这些问题。
JavaConfig类能互相import合并配置或是继承并重写其中的Bean方法。
这种Java配置类的方式就不需要使用Spring的xml配置了, 全部由Java类+注解的方式实现,实现如下:
实体类:
@Component //注入bean
public class User {
private String name;
public String getName() {
return name;
}
@Value("ps") //属性值注入
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
配置类:
@Configuration //Configuration代表这是一个配置类,就如applicationContext.xml
@ComponentScan("com.spong.pojo") //扫描指定包下的使用注解注入的类
@Import(MyConfig2.class) //导入其他的配置类,配置信息合并
public class MyConfig {
//注册一个bean,相当于xml中的bean标签
//方法名就相当于bean中的id
//返回值就相当于bean中的class
@Bean
public User getUser(){
return new User(); //返回要注入到bean的对象
}
}
测试类:
public class MyTest {
public static void main(String[] args) {
//如果完全使用了配置类配置,就只能通过AnnotationConfig的上下文对象获取容器,通过配置类的class对象来加载bean
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
User user = context.getBean("getUser",User.class);
System.out.println(user);
}
}
注意:在Web环境中,需要在web.xml中加入如下代码:
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.packtpub.learnvaadin.springintegration.SpringIntegrationConfiguration</param-value>
</context-param>
Spring/Springboot——JavaConfig的更多相关文章
- spring Boot异步操作报错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.self.spring.springboot.Jeep' available
我也是最近开始学习Spring Boot,在执行异步操作的时候总是汇报如下的错误: Exception in thread "main" org.springframework.b ...
- Spring SpringBoot和SpringCloud的关系
Spring SpringBoot和SpringCloud的关系 Spring Cloud 是完全基于 Spring Boot 而开发,Spring Cloud 利用 Spring Boot 特性整合 ...
- Spring 使用javaconfig配置
除了使用xml,spring提供javaconfig配置,下面是简单的例子: 1.声明接口 /** * */ package com.junge.demo.spring.service; /** * ...
- 接近8000字的Spring/SpringBoot常用注解总结!安排!
0.前言 大家好,我是 Guide 哥!这是我的 221 篇优质原创文章.如需转载,请在文首注明地址,蟹蟹! 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide:http ...
- Spring/SpringBoot常用注解总结
转自:[Guide哥] 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使 ...
- Java Spring的 JavaConfig 注解
序 传统spring一般都是基于xml配置的,不过后来新增了许多JavaConfig的注解.特别是springboot,基本都是清一色的java config,不了解一下,还真是不适应.这里备注一下. ...
- 详细解说Java Spring的JavaConfig注解 【抄】
抄自: http://www.techweb.com.cn/network/system/2016-01-05/2252188.shtml @RestController spring4为了更方便的支 ...
- 使用Spring的JavaConfig 和 @Autowired注解与自动装配
1 JavaConfig 配置方法 之前我们都是在xml文件中定义bean的,比如: 1 2 3 4 5 6 7 8 <beans xmlns="http://www.springf ...
- spring中JavaConfig相关的注解
在spring3.0中增加配置spring beans的新方式JavaConfig,可以替换spring的applicataion.xml配置.也即@Configuration对等<beans/ ...
随机推荐
- springboot application.yml配置学习
一.背景 为了更好的使用springboot,所以看一下application.yml配置这块.主要是看数据绑定这块. 主要参考:https://www.hangge.com/blog/cache/d ...
- p46_IPv4地址
IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口. IP地址::={<网络号>,<主机号>} 图中有6个子网 比如222.1.3.0是网络号,3是主机号,222 ...
- 程序员每日一乐:html动态烟花设计 3D
3D版烟花 效果图:file:///C:/Users/QianXin/Desktop/3D%E7%83%9F%E8%8A%B1.html 经过一天的的工作或者学习是否感到枯燥乏味?现在的你是否想找些乐 ...
- seaborn分布数据可视化:直方图|密度图|散点图
系统自带的数据表格(存放在github上https://github.com/mwaskom/seaborn-data),使用时通过sns.load_dataset('表名称')即可,结果为一个Dat ...
- clion更改大括号的位置
进入setting 搜索code style 如果是c++ /c 选择这个选项点开 wrapping and brace 里面 有brace placement 选择你想要的方式
- 彻底弄懂angularJS表单验证
常用的表单验证指令 (基本概念) 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="text" ...
- PHP strtotime() 函数
------------恢复内容开始------------ 实例 将任何字符串的日期时间描述解析为 Unix 时间戳: <?php // 设置时区 date_default_timezone_ ...
- PHP xml_parser_free() 函数
定义和用法 xml_parser_free() 函数释放 XML 解析器.高佣联盟 www.cgewang.com 如果成功,该函数则返回 TRUE.如果失败,则返回 FALSE. 语法 xml_pa ...
- Blob分析之board.hdev
* board.hdev: Detection of missing solder* 获取当前系统参数get_system ('clip_region', Information)*设置当前系统参数s ...
- bzoj 5206 [Jsoi2017]原力
LINK:原力 一张无向图 这道题统计三元环的价值和.有重边但是无自环. 我曾经写过三元环计数 这个和那个题差不太多. 不过有很多额外操作 对于重边问题 我们把所有颜色相同的重边缩在一起 这样的话我们 ...