1、spring注解
1.1@Controller
@Controller用来注解Action,在springMvc开发中也就是直接注解Controller
package com.action
@Controller
@Scope("prototype")
public class UserAction extends BaseAction<User>{
}
1.2@ Service
@Service("userService") public class UserServiceImpl implements UserService{ }上述代码告诉spring容器,创建UserService的bean,对应的id是userService,这样当在UserAction中使用UserService,就可以直接把userService注入到action层,进行调用,在调用的时候声明一个service对象,并且在其上面用@Resource进行注解,例:
@Resource(name = "userService")
private UserService userService;
1.3@ Repository
@Repository(value="userDao") public class UserDaoImpl extends BaseDaoImpl<User> { }
Repository的作用是将数据访问层 (DAO 层 ) 的类标识为 Spring Bean,只需将该注解标注在 DAO类上即可。上述代码是让Spring容器创建了一个id为userDao的bean,当在service层使用的时候也可以像1.2那样用@resource注解一下,就可以调用dao层的增删改查方法操作数据库了。这里使用了BaseDao<T>和BaseAction<T>,T是泛型,如果传的是别的实体类,可以也直接写成BaseDaoImpl<Customer> 。
当然需要在spring配置文件里面配置一下自动扫描范围 <context:component-scan base-package="*"/> *代表你想要扫描的那些包的目录所在位置。Spring 在容器初始化时将自动扫描 base-package 指定的包及其子包下的所有的.class文件,所有标注了 @Repository 的类都将被注册为 Spring Bean。
这种注解的方式可以方便程序员来写代码,不用在xml配置文件配置那么多了。
例如: <bean id="orderService" class="com.service.OrderService"> <property name="userDAO" ref="u" />上述是在xml配置文件里,将userDao和goodsDao注入到了orderService中,这样orderService就可以调用userDao和goodsDao里面的方法来操作数据库了。<property name="goodsDAO" ref="u" /></bean>
总之不管是在自动扫描的方式还是在xml配置文件里面进行注入,都是为了不让程序员不停的new对象,使用起来更灵活。