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的更多相关文章

  1. 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 ...

  2. Spring SpringBoot和SpringCloud的关系

    Spring SpringBoot和SpringCloud的关系 Spring Cloud 是完全基于 Spring Boot 而开发,Spring Cloud 利用 Spring Boot 特性整合 ...

  3. Spring 使用javaconfig配置

    除了使用xml,spring提供javaconfig配置,下面是简单的例子: 1.声明接口 /** * */ package com.junge.demo.spring.service; /** * ...

  4. 接近8000字的Spring/SpringBoot常用注解总结!安排!

    0.前言 大家好,我是 Guide 哥!这是我的 221 篇优质原创文章.如需转载,请在文首注明地址,蟹蟹! 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide:http ...

  5. Spring/SpringBoot常用注解总结

    转自:[Guide哥] 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使 ...

  6. Java Spring的 JavaConfig 注解

    序 传统spring一般都是基于xml配置的,不过后来新增了许多JavaConfig的注解.特别是springboot,基本都是清一色的java config,不了解一下,还真是不适应.这里备注一下. ...

  7. 详细解说Java Spring的JavaConfig注解 【抄】

    抄自: http://www.techweb.com.cn/network/system/2016-01-05/2252188.shtml @RestController spring4为了更方便的支 ...

  8. 使用Spring的JavaConfig 和 @Autowired注解与自动装配

    1 JavaConfig  配置方法 之前我们都是在xml文件中定义bean的,比如: 1 2 3 4 5 6 7 8 <beans xmlns="http://www.springf ...

  9. spring中JavaConfig相关的注解

    在spring3.0中增加配置spring beans的新方式JavaConfig,可以替换spring的applicataion.xml配置.也即@Configuration对等<beans/ ...

随机推荐

  1. 在linux下修改文件夹机器子文件夹的权限

    使用命令:chmod 用法:chmod [选项]... 模式[,模式]... 文件... 或:chmod [选项]... 八进制模式 文件... 或:chmod [选项]... --reference ...

  2. pyenv虚拟环境安装

    安装过程 配置yum源 # curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ...

  3. ant design pro 实战 : 使用 ztree

    应当指出,antd 是有 ztree 组件的,但是太简单,无法满足复杂的业务需求. 所以我还是决定使用zTree. 用 npm | cnpm 或者 yarn | tyarn 安装,这一步略. 在 js ...

  4. Oracle对表进行备份

    前言: 在实际开发中,我们常常需要对单张或多张表进行备份,以下博主就从这两个方面进行总结.如需转载,请标明来处,谢谢! 在备份前我们先创建表盒相关测试的数据 -- Create table creat ...

  5. websocket推送进度条百分比给前台

    说明:后台springboot项目 前台vue+element-UI 直接放代码: //别忘了开启springboot的websocket <dependency> <groupId ...

  6. java基础(九)--方法重载

    如System.out.println()方法即是方法重载的. 以下举例说明自定义sum()方法的重载 package cnblogs; public class TestBase09MathRelo ...

  7. socket网络

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  8. 简单了解InnoDB底层原理

    存储引擎 很多文章都是直接开始介绍有哪些存储引擎,并没有去介绍存储引擎本身.那么究竟什么是存储引擎?不知道大家有没有想过,MySQL是如何存储我们丢进去的数据的? 其实存储引擎也很简单,我认为就是一种 ...

  9. c++ string类型举例(递归预习的边界)

    #include <iostream> #include <string> using namespace std; int main ( ) { string str; // ...

  10. CF掉分日记 6.6 6.8

    ---恢复内容开始--- 写的效果依旧不好 还没写完前四题比赛就结束了 而且这些普及组的题目 我大多还是缺少简单算法的灵性 总是把问题搞复杂化. 6.5 A 第一道题非常水 简单分析发现是一个快速幂的 ...