1、新建一个Web程序
在程序中引入Spring所需要的jar包,我以前有弄好的包,包含了以下几个jar包
2、在src下新建Person.java的实例bean.
package cn.ehoo.bean;
/**
*@author whp
*@Email whp@ehoo.cn
*@Dec 30, 2010
*
*/
public class Person {
private Long id;
private String userName;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
3、再建立数据层的PersonDao接口与PersonDaoBean的实现bean
PersonDao.java
package cn.ehoo.dao;
import cn.ehoo.bean.Person;
/**
*@author whp
*@Email whp@ehoo.cn
*@Dec 30, 2010
*
*/
public interface PersonDao {
public void save(Person person);
}
PersonDaoBean.java
package cn.ehoo.dao.impl;
import org.springframework.stereotype.Repository;
import cn.ehoo.bean.Person;
import cn.ehoo.dao.PersonDao;
/**
*@author whp
*@Email whp@ehoo.cn
*@Dec 30, 2010
*
*/
@Repository//代表这个类是数据库层的代码
public class PersonDaoBean implements PersonDao {
public void save(Person person){
System.out.println("执行 PersonDaoBean 里的save方法");
}
}
4 建立服务层的PersonService.java与实现类PersonServiceBean.java
PersonService.java
package cn.ehoo.service;
import cn.ehoo.bean.Person;
/**
*@author whp
*@Email whp@ehoo.cn
*@Dec 30, 2010
*
*/
public interface PersonService {
public void save(Person person);
}
实现类PersonServiceBean.java
package cn.ehoo.service.impl;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cn.ehoo.bean.Person;
import cn.ehoo.dao.PersonDao;
import cn.ehoo.service.PersonService;
/**
*@author whp
*@Email whp@ehoo.cn
*@Dec 30, 2010
*
*/
@Service//代表这个类是服务层的代码
public class PersonServiceBean implements PersonService {
@Resource private PersonDao personDao;
public void save(Person person){
System.out.println("执行 PersonServiceBean 里的save方法");
personDao.save(person);
}
@PostConstruct//如果在使用这个类之前想对这个类的一些资源进行初始化可以用这个注解
public void init(){
System.out.println("初始化资源文件");
}
@PreDestroy//如果在使用这个类之后想对这个类的一些资源进行关闭可以用这个注解
public void destroy(){
System.out.println("关闭资源性文件");
}
}
5 在程序的classpath路径下面(也就是src的根目录下)建立beans.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="cn.ehoo" /><!-- 在打开这个注解后,spring就会自动对java程序里标识了注解的类进行管理 -->
</beans>
6 junit进行测试
package junit.test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.ehoo.bean.Person;
import cn.ehoo.service.PersonService;
/**
*@author whp
*@Email whp@ehoo.cn
*@Dec 30, 2010
*
*/
public class SpringTest {
public static PersonService personService;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
personService =(PersonService)cxt.getBean("personServiceBean");
}
@Test
public void save(){
Person person = new Person();
personService.save(person);
}
public static void main(String[] args) {
try {
setUpBeforeClass();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*@author whp
*@Email whp@ehoo.cn
*@Dec 30, 2010
*
*/
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
}
分享到:
相关推荐
在Spring框架中,自动检测注解(Autowired)是核心特性之一,它极大地简化了依赖注入的过程,使得开发者能够更加专注于业务逻辑,而不是繁琐的配置。本文将深入探讨Spring中的自动检测注解及其工作原理。 首先,`@...
本篇将通过注解方式探讨如何在Spring中实现AOP,基于提供的资源,我们可以看到一个实际的Demo项目结构。 首先,我们来看项目的基本结构: 1. `bin`目录:编译后的Java类文件会放在这里。 2. `.settings`目录:包含...
总结,Spring的XML配置是其早期的核心配置方式,虽然现在更多地倾向于使用注解,但理解XML配置对于理解Spring的工作原理和历史仍然十分重要。通过XML配置,我们可以灵活地管理Bean的生命周期,实现依赖注入,以及...
在Spring框架中,注解方式的使用极大地简化了配置,提高了开发效率。本文将深入解析Spring中的注解式编程,主要包括IOC(Inversion of Control,控制反转)的自动装配和依赖注入的解析。 首先,我们来看一下IOC自动...
在本项目"Dubbo + Zookeeper + Spring 注解式开发 demo"中,我们将深入探讨如何使用Dubbo、Zookeeper以及Spring框架进行分布式服务的注解式开发。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了服务发现、...
本篇文章将深入探讨如何通过Spring的注解方式实现AOP的细节。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了跨越多个对象的行为或责任。切点(Pointcut)定义了哪些方法会被通知(Advice...
Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...
这个小例子将深入探讨Spring框架中的主要注解及其用法。 1. `@Component`、`@Service`、`@Repository` 和 `@Controller` 这些注解是Spring组件扫描的基础,它们定义了一个bean。`@Component`是最通用的,适用于...
在使用DWR和Spring结合时,注解方式的引入极大地简化了配置过程。下面将详细介绍如何通过注解实现DWR和Spring的集成以及相关知识点: 1. **Spring注解配置**: - `@Configuration`:标记一个类为Spring配置类,可...
总之,这个“全注解方式实现的demo”展示了如何整合Struts2、Spring3和Hibernate,利用注解简化配置,提高开发效率。对于初学者,这是一个很好的学习资源,可以深入理解这三大框架的协同工作以及注解在实际项目中的...
Spring框架在事务管理方面提供了两种主要的实现方式:编程式事务管理和声明式事务管理。本篇文章将重点关注声明式事务管理中的注解驱动方式,也就是基于`@Transactional`注解的事务实现。这种方式使得代码更加简洁,...
本文将深入探讨"类似Spring Controller注解Demo"这一主题,结合提供的标签"源码"和"工具",我们将分析Spring MVC中的Controller注解以及如何通过源码理解和应用它们。 Spring MVC是Spring框架的一部分,它提供了...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。...实践这些示例将有助于理解和掌握Spring MVC的注解驱动开发方式,为进一步深入学习和开发复杂的Web应用奠定基础。
本教程将详细阐述`Hibernate`注解和`Spring`注解的使用,以及如何在一个登录示例中结合它们。 `Hibernate`是一个强大的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来处理数据库操作,而无需直接编写...
在Spring中,依赖注入(Dependency Injection,简称DI)是核心特性,而注解(Annotation)则是实现DI的一种现代化方式。"spring-demo10-注解-IOC.zip"这个压缩包文件很显然包含了关于Spring框架如何使用注解进行依赖...
本文将详细介绍如何在Spring环境中使用注解方式配置Quartz。 1. **引入依赖** 在项目中,你需要引入Quartz和Spring的相应依赖。在Maven的pom.xml文件中,添加以下依赖: ```xml <groupId>org.quartz-scheduler...
在Spring框架中,注解是实现依赖注入和配置的核心机制之一。本文将深入探讨Spring注解的基本原理,包括它们如何被解析、处理以及如何影响应用程序的生命周期。 首先,我们需要了解注解在Java语言中的本质。注解是一...
Spring注解大全,注解整理方式采用思维导图工具(XMind)整理,对注解按自己的方式进行了分类,并对所有的注解在备注中进行了解释说明;