最近在TSS上看到aridpojo框架(
code.google.com/p/aridpojos/),能够自动创建spring的bean定义(Chris Richardson's Spring library to autocreate bean definitions)。忍不住试了下。
创建一个Dao接口:
package test.dao;
import test.TestBean;
public interface IDao {
public TestBean add(TestBean bean);
public TestBean delete(TestBean bean);
}
写一个简单的Dao实现类,仅仅输出一些文字:
package test.dao;
import test.TestBean;
public class PlainDaoImpl implements IDao {
@Override
public TestBean add(TestBean bean) {
// TODO Auto-generated method stub
System.out.println("dao add method...");
return bean;
}
@Override
public TestBean delete(TestBean bean) {
// TODO Auto-generated method stub
System.out.println("dao delete method...");
return bean;
}
}
再写一个服务类接口:
package test.service;
import test.TestBean;
public interface IService {
public TestBean add(TestBean bean);
public TestBean delete(TestBean bean);
}
写一个简单的实现类,调用Dao实现类中的相应方法:
package test.service;
import test.TestBean;
import test.dao.IDao;
public class PlainServiceImpl implements IService{
private IDao plainDao=null;
@Override
public TestBean add(TestBean bean) {
// TODO Auto-generated method stub
System.out.println("service add method...");
this.plainDao.add(bean);
return null;
}
@Override
public TestBean delete(TestBean bean) {
// TODO Auto-generated method stub
System.out.println("service delete method...");
this.plainDao.delete(bean);
return null;
}
public void setPlainDao(IDao plainDao) {
this.plainDao = plainDao;
}
}
写一个简单的javabean:
package test;
public class TestBean {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
配置文件testApplicationContext.xml,这是重点:
<beans xmlns="http://www.springframework.org/schema/beans"><arid:define-beans package="test.service"><arid:define-beans package="test.dao"><beans xmlns="http://www.springframework.org/schema/beans"><arid:define-beans package="test.service"><arid:define-beans package="test.dao">
</arid:define-beans>《?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:arid="http://chrisrichardson.net/schema/arid"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://chrisrichardson.net/schema/arid http://chrisrichardson.net/schema/arid.xsd"
default-autowire="byName"》
《arid:define-beans package="test.service"
autowire="byType" /》
《arid:define-beans package="test.dao"
autowire="byType" /》
《/beans》
</arid:define-beans>
首先引入:http://chrisrichardson.net/schema/arid http://chrisrichardson.net/schema/arid.xsd。然后使用arid命名空间配置。package属性设置需要自动创建bean定义的包名;autowire属性设置按何种方式自动设置bean直接的引用关系,这个属性和spring本身的autowire的含义和取值一致。
写一个junit测试类:
package test;
import org.junit.Test;
import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
import test.service.IService;
public class PlainServiceTest extends AbstractDependencyInjectionSpringContextTests{
private IService service;
@Override
protected String[] getConfigLocations() {
return new String[]{"classpath:appctx/**/testApplicationContext.xml"};
}
@Test
public void testAdd() {
TestBean bean=new TestBean();
this.service.add(bean);
}
@Test
public void testDelete() {
TestBean bean=new TestBean();
this.service.delete(bean);
}
public void setService(IService service) {
this.service = service;
}
}
输出:
service add method...
dao add method...
service delete method...
dao delete method...
确实能够工作。如果有bean需要依赖框架自动定义的bean呢?再试试。
写一个简单的bean调用PlainService:
package test.service;
import test.TestBean;
public class DelegateServiceImpl {
private IService plainService;
public void setPlainService(IService plainService) {
this.plainService = plainService;
}
public TestBean add(TestBean bean) {
// TODO Auto-generated method stub
System.out.println("delegate service add method...");
this.plainService.add(bean);
return null;
}
public TestBean delete(TestBean bean) {
// TODO Auto-generated method stub
System.out.println("delegate service delete method...");
this.plainService.delete(bean);
return null;
}
}
配置文件中增加:
<bean id="delegateService" class="test.service.DelegateServiceImpl"></bean>《bean id="delegateService" class="test.service.DelegateServiceImpl"》《/bean》
框架自动配置的bean名称缺省使用以下规则:
类名去掉Impl后缀。比如,PlainServiceImpl在spring容器中配置名称为“plainService”。
再写个junit测试类:
package test;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
import test.service.DelegateServiceImpl;
public class DelegateServiceTest extends
AbstractDependencyInjectionSpringContextTests {
private DelegateServiceImpl service;
@Override
protected String[] getConfigLocations() {
return new String[] { "classpath:appctx/**/testApplicationContext.xml" };
}
@Test
public void testAdd() {
TestBean bean = new TestBean();
this.service.add(bean);
}
@Test
public void testDelete() {
TestBean bean = new TestBean();
this.service.delete(bean);
}
public void setService(DelegateServiceImpl service) {
this.service = service;
}
}
输出:
delegate service add method...
service add method...
dao add method...
delegate service delete method...
service delete method...
dao delete method...
感觉非常不错,准备最近有时间一定要好好研究下。</beans></arid:define-beans></arid:define-beans></beans>
分享到:
相关推荐
xbean简化Spring配置文件的优点是可以简化配置文件的编写,使得我们的代码更加简洁和易于维护。特别是在复杂的Spring开发系统中,xbean可以发挥很大的作用,例如在使用ActiveMQ时。 通过使用xbean,我们可以将配置...
尽管这看起来可以简化配置,但在实际项目中并不推荐使用。自动绑定牺牲了配置的清晰度和可维护性,特别是在大型项目中。 2. **使用有意义的命名** - 在定义bean ID时,使用具有描述性的名称可以帮助其他开发者更...
Spring Boot专注于Spring平台和第三方开发库,简化了基于Spring的产品开发。让你在开始Spring应用开发时,不会被各种繁杂的事务困扰。通过Spring Boot,开发时只需少量的Spring配置就可以完成项目结构的初始搭建。
综上所述,Spring Boot 通过简化配置、内嵌容器、提供生产就绪型功能等方式,极大地提升了 Spring 应用的开发效率。无论是对于初学者还是经验丰富的开发者来说,Spring Boot 都是一个强大且灵活的选择。随着 Spring ...
9. **Spring Boot**:基于Spring框架的快速开发工具,通过自动配置和起步依赖,大大简化了Spring应用的启动和配置。 综上所述,Spring配置文件是Spring框架的核心组成部分,它定义了应用的组件及其相互关系。通过...
除了上述内容,Spring框架还涉及到许多其他方面,比如数据访问/集成(包括JDBC、ORM框架如Hibernate和MyBatis的支持)、Spring Boot(用于简化Spring应用的初始化和配置)、Spring Security(提供身份验证和授权功能...
- **简化配置**:Spring Boot通过默认配置减少了大量手工配置的工作。 - **快速启动**:内置的Tomcat、Jetty等容器支持,使得应用可以快速启动。 - **自动配置**:Spring Boot会根据类路径上的jar包自动配置Spring...
Spring框架是Java开发中广泛应用的一个轻量级框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心特性,极大地简化了企业级应用的开发。在本篇文章中,...
springbootSpring Boot是一个基于Spring框架的开源项目,旨在简化新Spring应用的...简化配置:通过自动配置,减少了大量的XML或注解配置。 起步依赖:提供了一系列starter依赖,简化了项目依赖管理。 文心大模型3.5生成
Spring 配置文件详解 Spring 框架中的配置文件是项目的核心组件之一,用于定义和...通过简化配置、使用 ApplicationContext 装配 Bean、选择合适的注入方式和添加描述注释,我们可以提高配置文件的可读性和可维护性。
Spring Boot是Spring的现代变体,旨在简化Spring应用程序的初始设置和配置。它默认配置了许多常见设置,让开发者能快速启动项目。 10. **Spring Batch** Spring Batch是一个用于处理批量数据的模块,提供了批处理...
3. 配置JMS模板:Spring JMS模板提供了一种简化发送和接收消息的API。创建一个JmsTemplate bean并注入上面的连接工厂。 ```xml <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> `...
Spring Boot是一个基于Spring框架的开源项目,旨在简化Spring应用程序的开发、配置和部署。本文将详细介绍Spring Boot的基本概念、特性、常用注解和实践。我们将使用一个实际的示例,帮助你更好地理解和应用Spring ...
首先,Spring Boot简化了Spring应用的配置。通过内置的Tomcat服务器和自动配置功能,我们可以快速启动一个HTTP服务,而无需手动管理服务器或配置文件。它还包含了大量常用的第三方库配置,如数据访问、安全、邮件...
Spring Boot的核心理念是简化配置,它通过`application.properties`或`application.yml`文件来存储全局配置。当项目变得复杂,包含多个模块时,这种单一配置文件的方式可能会导致混乱。因此,我们需要为每个模块创建...
Spring作为一个流行的Java应用框架,可以方便地与Dubbo集成,简化服务的创建和消费。 首先,我们来看`dubboconsumer`部分。这个目录下的内容通常包含了消费者端的配置和代码,它会调用`dubboprovider`提供的服务。...
10. **Spring Boot**:简化了Spring应用的初始搭建和运行过程,通过内置的Tomcat服务器和自动配置特性,使得创建独立的、生产级别的Spring应用变得简单。 阅读《Spring配置全书》下篇,你将能深入理解Spring框架的...