在spring中提供了如下几个Annotation来标注Spring Bean:
- @Component:标注一个普通的Spring Bean类。
- @Controller:标注一个控制器组件类。
- @Service:标注一个业务逻辑组件类。
- @Repository:标注一个Dao组件类。
另外两个常用的Spring Annotation:
- @Autowired:用来自动装配Bean,可以标注setter方法、普通方法、Field和构造器等。
- @Scope:用来标注一个Spring Bean的作用域,默认是singleton,对于action类我们会通常将其scope设置为prototype。
下面看如何使用Spring的annotation,首先需要在Spring的配置文件applicationContext.xml中添加如下配置:
<context:component-scan base-package="zwh.ssh.maven"></context:component-scan>
这里package属性要设置成你的组件所在的包,添加该语句后Spring会自动搜索该包和子包下的Bean组件。另外为了applicationContext.xml识别context的标签前缀,需要添加context的命名空间和其使用shema文件位置,其内容如下:
<?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:p="http://www.springframework.org/schema/p"
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.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- derby创建用户名和密码参考:http://www.joyzhong.com/archives/643 -->
<bean
id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property name="url">
<value>jdbc:derby:f:/zwh/mydb2</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
<bean
id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect"> org.hibernate.dialect.DerbyDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>zwh.ssh.maven.po.User</value>
</list>
</property>
</bean>
<context:component-scan base-package="zwh.ssh.maven"></context:component-scan>
</beans>
接下来给我的代码添加annotation,首先为dao添加:
@Repository("userDao")
public class UserDaoDerbyImpl implements UserDao {
@Autowired
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public List<User> findAllUser(){
Session session = this.sessionFactory.openSession();
List<User> list = session.createCriteria(User.class).list();
session.close();
return list;
}
}
这里的sessionFactory还是在xml文件里配置的,使用@Autowired来自动装配xml文件里的sessionFactory。并将该Dao类使用@Repository("userDao")标注,其id属性是userDao,自动装配时会根据该属性值将该对象注入进去。
为service添加annotation:
@Service("userService")
public class UserServiceImpl implements UserService {
Logger log = Logger.getLogger(UserService.class);
@Autowired
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public boolean login(String username,String password){
log.info("正在执行login方法....");
List<User> users =this.userDao.findAllUser();
for(User user : users){
if(user.getUsername().equals(username)){
if(user.getPassword().equals(password)){
return true;
} else {
return false;
}
}
}
return false;
}
public boolean check(String username) {
List<User> users =this.userDao.findAllUser();
for(User user : users){
if(user.getUsername().equals(username)){
return true;
}
}
return false;
}
}
注意这里@Autowired标注的Field的是userDao,与前面@Repository里面的内容是一致的。
action的annotation:
@Scope("prototype")
@Controller
public class LoginAction implements Action {
@Autowired
private UserService userService;
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public String execute(){
String pwdMD5 = DigestUtils.md5Hex(user.getPassword());
if(this.userService.login(user.getUsername(), pwdMD5)){
ActionContext.getContext().getSession().put("username", this.user.getUsername());
return SUCCESS;
}
return ERROR;
}
}
这里使用@Scope("prototype")来指定了该action是原型类型的,即每来一个请求都要new一个这个类的对象,而不是使用单例,使用单例时如果有多个请求同时请求该action就会出现错误。
分享到:
相关推荐
Spring Annotation是Spring框架中的一个重要特性,它极大地简化了配置,提高了代码的可读性和可维护性。这篇博客将深入探讨Spring Annotation的基础知识,以及如何在实际项目中应用。 Spring Annotation的引入主要...
Spring注解的使用大大减少了XML配置,提高了代码的可读性和维护性。理解并熟练运用这些注解是每个Spring开发者必备的技能。在实际开发中,根据项目需求选择合适的注解,可以有效地组织和管理代码,提升开发效率。
### Spring的Annotation方式详解 #### 引言 随着Spring框架的发展,其依赖注入(DI)机制也经历了从XML配置向注解驱动的重大转变。自Spring 3.0版本起,框架引入了一系列注解来简化依赖配置,使得开发人员能够在不...
Spring Annotation和Maven的结合使用是现代Java项目中常见的配置方式,它们为开发者提供了高效、灵活的开发环境。本篇文章将深入探讨Spring注解和Maven的配置及其重要性。 **Spring注解** Spring注解是Spring框架...
在这个项目中,使用Annotation配置代替了传统的XML配置,使得配置文件更简洁,代码更易于理解和维护。Spring的@Component、@Service、@Repository和@Controller等注解用于标记Bean,而@Autowired注解实现自动装配。...
标题 "SpringIOC_SpringMVC_SpringAnnotation_JPA" 涵盖了四个核心的Java开发框架技术,它们是Spring框架的重要组成部分。Spring框架是一个开源的应用框架,它为Java开发者提供了一个全面的基础设施,用于构建可扩展...
为了具体分析和运行这些代码,你需要将其解压并导入到你的项目中,然后按照Spring的配置步骤进行设置。 总的来说,通过Spring的注解式AOP和反射机制,我们可以方便地实现日志记录,提高代码的可维护性和可读性。...
Spring 2.0引入了基于注解的AOP配置,极大地简化了AOP的使用。这篇博客文章将探讨如何在Spring 2.0中使用AOP实例,特别是通过注解来实现。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了...
在Spring中,我们可以使用`@Configuration`和`@Bean`注解来替代XML配置文件。`@Configuration`注解表明当前类是一个配置类,可以创建bean。`@Bean`注解则标记在方法上,表示该方法会返回一个bean实例。例如,创建...
在Spring框架中,注解(Annotation)的使用极大地简化了传统XML配置的复杂性,使得开发者可以更加专注于业务逻辑的实现。本篇文章将深入探讨如何通过注解将配置资源注入到Bean中,以此来理解Spring的注解驱动开发。 ...
在`IOC_Project`这个压缩包文件中,很可能是包含了一个示例项目,用于演示如何使用Spring的IOC Annotation注入。通过查看和运行这个项目,你可以更深入地了解这些概念并实践它们。项目的结构可能包括了源代码文件(`...
### Spring使用Annotation整合DWR知识点解析 #### 一、概览 在现代Web开发中,Direct Web Remoting(简称DWR)是一种简化Ajax应用开发的技术,它允许JavaScript直接调用服务器端的Java方法,而无需编写复杂的XML...
早期的Spring项目多采用XML配置,而现在更多地倾向于使用Java配置或者基于注解的配置,因为它们更直观且易于维护。 1. XML配置: 创建一个名为`applicationContext.xml`的文件,这是Spring的主配置文件。在其中,...
3300_Registration_11可能是一个示例项目,包含了上述整合的实例,包括Action、Service、DAO、配置文件等,开发者可以通过学习和运行这个项目来理解和实践Struts2、Hibernate3、Spring2.5的整合以及注解的使用。...
本文将深入探讨如何在Spring中使用注解来配置Ehcache。 首先,我们需要在项目中引入Ehcache的相关依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>net.sf.ehcache</groupId> ...
在Spring的配置文件中,我们需要添加`<tx:annotation-driven>`元素来启用基于注解的事务管理,并指定事务管理器。例如: ```xml <bean id="transactionManager" class="org.springframework.orm.hibernate4....
Spring框架是Java开发中不可或缺的一部分,它以其强大...通过深入学习和理解Spring的注解机制,我们可以更好地设计和实现应用程序,同时,源码分析能让我们更深入地掌握Spring的精髓,从而在实际项目中发挥更大的作用。
随着Spring 3.0版本的发布,框架引入了基于Annotation的依赖注入机制,极大地简化了配置过程,提高了开发效率。 #### Spring 3.0的注解驱动依赖注入 Spring 3.0之前的版本主要依赖XML配置文件来定义和管理Bean之间...
接下来,我们讨论如何将Spring MVC与Hibernate整合,以便在项目中使用注解配置。 1. **依赖管理**:首先,确保在你的项目中添加了Spring MVC和Hibernate的依赖。这通常通过在`pom.xml`文件中配置Maven或者在`build....