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/ ...
随机推荐
- Guava集合--新集合类型
Guava引入了很多JDK没有的.但我们发现明显有用的新集合类型.这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念.作为一般规则,Guava集合非常精准地遵循了JDK接口契约 ...
- java 成员变量和局部变量的区别
将对象的存储在数组中会报错 public static void main(String[] args) { ArrayList<Goods> arrayList = new ArrayL ...
- Mybatis(五)Spring整合Mybatis之mapper动态代理开发
要操作的数据库: IDEA创建的Java工程,目录结构如下: 一.导包 1.spring的jar包 2.Mybatis的jar包 3.Spring+mybatis的整合包. 4.Mysql的数据库驱动 ...
- DQL_MySQL
4.DQL(查询数据){SUPER 重点} 4.1DQL (Data Query Language : 数据查询语言) -所有的查询操作: Select 数据库中最核心的语言 create data ...
- IDEA中项目的两种打包方式
本文主要介绍在IDEA中怎么打包,及可以用哪种方式打包. 若是有指正或补充的,欢迎留言~ ٩(●̮̃•)۶ 接下来进入正题: IDEA中打包需要先进行配置,so,我们先打开<abbr titl ...
- Mac Sourcetree克隆项目提示无效的url
之前用SoucreTree拉去过另一个账号的git项目,今天创建了一个新的码云账号,克隆里面的项目是一直报错误 > 错误如下: > 原因以及解决方案:
- 21天速成python电子书pdf|超级厉害的书内附百度云链接可直接下载|
python的学习书籍小编看过很多,但是这本<21天学通python>真的是堪称极品!本书的作者团队成员为一线开发工程师.资深编程专家或专业培训师,在编程开发方面有着丰富的经验,并已出版过 ...
- Django学习路29_css样式渲染 h3 标签
在 static 静态文件夹下创建 css 文件夹 home.css 此时 home.css 路径是 'static/css/home.css' 在 对应的 home.html 文件中添加 css 样 ...
- 不想得手指关节炎?帮你提炼IDEA常用代码补全操作
一.常用的代码补全操作 1..for和.fori(for 循环遍历) 输入args.for回车(args是一个数组或集合类),则会生成for循环遍历: 输入args.fori回车,则会生成带有索引的f ...
- PHP mt_rand() 函数
实例 生成随机数: <?phpecho(mt_rand() . "<br>");echo(mt_rand() . "<br>"); ...