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>

最新文章

  1. 4-4 grep及正则表达式
  2. CSS的::selection使用方法
  3. next_permutation 和 一个不成功的案例
  4. WSDL Style和use的组合方式说明
  5. 最新的windows xp sp3序列号(绝对可通过正版验证)
  6. 《Java程序设计》第十周学习总结
  7. 有用好看的CSS+JS+table 导航
  8. 简单易懂的命名空间及use的使用
  9. Spring 3.0 注解注入详解
  10. 效率神器 Workflow 实例分享
  11. C# Excel写入数据及图表
  12. [Maven]Maven构建可执行的jar包(包含依赖jar包)
  13. 纠错式教学法对比鼓励式教学法 -----Lily、贝乐、英孚,乐加乐、剑桥国际、优学汇、北外青少
  14. [NOIP2017普及组]棋盘
  15. [转] Webpack 打包优化之体积篇
  16. 桐桐的数学游戏(N皇后)
  17. POJ.2774.Long Long Message/SPOJ.1811.LCS(后缀自动机)
  18. Docker存储方式选型建议
  19. 爬取知乎话题async使用协程
  20. Python全栈day19(函数补充)

热门文章

  1. 团队转型,Scrum与DevOps要如何取舍?
  2. Codeforces1379-题解
  3. 带你快速了解 MongoDB 分布式集群
  4. python爬虫入门(5)----- 阿里巴巴供应商爬虫
  5. .net core 自带分布式事务的微服务开源框架JMS
  6. MySQL组复制MGR(一)-- 技术概述
  7. Mysql Backup
  8. java JDBC自我总结
  9. Day02_WebCrawler(网络爬虫)
  10. numpy第三方库