Spring2.5 Annotation-based-configration大大简化了配置,用一个经典的HelloWorld程序来体验一下:
package edu.jlu.fuliang;
import org.springframework.stereotype.Component;
@Component
public class MessageProvider {
private String message = "Hello World!";
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
我们只要在bean面前使用@Component注解就可以被Spring的IOC容器管理了.
在看看怎么把MessageProvider注入到MessageRender里面的:
package edu.jlu.fuliang;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MessageRender {
private MessageProvider messageProvider;
@Autowired
public void setMessageProvider(MessageProvider messageProvider) {
this.messageProvider = messageProvider;
}
public void render(){
System.out.println(messageProvider.getMessage());
}
}
使用@Autowired注解,Spring就可以把messageProvider注入到MessageRender里面了,
默认是通过byType来自动织入的,可以结合@Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了.
然后在XML中,只需要很少的配置了:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan base-package="edu.jlu.fuliang"/>
</beans>
<context:annotationconfig/> 将隐式地向 Spring 容器注册 AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 以及 equiredAnnotationBeanPostProcessor 这4个 BeanPostProcessor。
<context:component-scan/> 还允许定义过滤器将基包下的某些类纳入或排除
<context:component-scan base-package="com.baobaotao">
<context:include-filter type="regex"
expression="edu\.jlu\.fuliang\.service\..*"/>
<context:exclude-filter type="aspectj"
expression="edu.jlu.fuliang.util..*"/>
</context:component-scan>
下面是一个测试代码:
package edu.jlu.fuliang;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class HelloWorld {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
MessageRender render = (MessageRender) context.getBean("messageRender");
render.render();
}
}
可惜在如果 Bean 不是自己编写的类(如 JdbcTemplate、SessionFactoryBean 等),注释配置将无法实施.所以还的使用XML,这样将导致XML和Annotation混用,感觉有点
混乱.个人感觉Annotation能够很大程度减少配置的负担,但没有XML灵活,并且修改配置的
时候需要重新编译代码.有时候也不见得比XML简洁,例如使用 @Transactional 事务注释,没有 aop/tx 命名空间的事务配置灵活和简单.
分享到:
相关推荐
马士兵视频里的struts2 hibernate3 spring2.5 annotation 整合 绝对好用 里面还有jar包 部署就可以用
赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...
赠送jar包:javax.annotation-api-1.2.jar; 赠送原API文档:javax.annotation-api-1.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-1.2.pom;...
赠送jar包:javax.annotation-api-1.3.2.jar; 赠送原API文档:javax.annotation-api-1.3.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.3.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-...
赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...
spring的annotation-driven配置事务管理器详解 (多数据源配置
这里zip压缩包囊括了学习Spring过程中用到的所有的jar包; 有: commons-logging-1.2.jar spring-beans-4.0.4.RELEASE.jar spring-context-4.0.4.RELEASE.jar spring-core-4.0.4.RELEASE.jar spring-expression-...
配置整合DWR3.0和Spring2.5使用annotation注解
point-cloud-annotation-tool win10解压直接运行
赠送jar包:javax.annotation-api-1.2.jar; 赠送原API文档:javax.annotation-api-1.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-1.2.pom;...
赠送jar包:javax.annotation-api-1.3.2.jar; 赠送原API文档:javax.annotation-api-1.3.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.3.2-sources.jar; 包含翻译后的API文档:javax.annotation-api-...
androidx-annotation-1.0.0.jar
JDK9及以上版本没有javax.annotation-api-***.jar包 ,无法使用注解:@Resource JDK新特性,高版本JDK没有自带的javax(java扩展包)了。或者是使用的JDK不完整。 下载javax.annotation.jar包,导入到lib文件夹下,...
github链接链接:https://github.com/springzfx/point-cloud-annotation-tool 在windows平台编译完成后的exe和dll文件,可以直接打开使用,并对原项目进行了优化,增加了列表和标注文件的显示功能,标注起来更快,...
androidx-annotation-1.2.0.jar
注解、声明,@Resource注解所在的包
@androidx.annotation.NonNull 缺失的兼容、androidx.annotation兼容包
赠送jar包:mybatis-plus-annotation-3.2.0.jar; 赠送原API文档:mybatis-plus-annotation-3.2.0-javadoc.jar; 赠送源代码:mybatis-plus-annotation-3.2.0-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-...
赠送jar包:mybatis-plus-annotation-3.5.1.jar; 赠送原API文档:mybatis-plus-annotation-3.5.1-javadoc.jar; 赠送源代码:mybatis-plus-annotation-3.5.1-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-...
javax.annotation-3.1.2.2-sources.jar,javax.annotation-3.1.2.2.jar无分共享