SpringMVC的注解和依赖注入(IOC) 亦凉 2022-07-27 14:48 154阅读 0赞 **1、spring注解** 1.1@Controller @Controller用来注解Action,在springMvc开发中也就是直接注解Controller package com.action @Controller @Scope("prototype") public class UserAction extends BaseAction<User>{ } 上述代码就是告诉spring容器,我是一个action类,spring容器会自动帮忙创建一个userAction的的对象,声明一个 @Scope("prototype" ),是为了使你提交的每一个请求有一个单独的action来处理,这样可以保证action的线程安全(对线程安全与否不了解的可以去查一下相关知识) 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" /> <property name="goodsDAO" ref="u" /> </bean> 上述是在xml配置文件里,将userDao和goodsDao注入到了orderService中,这样orderService就可以调用userDao和goodsDao里面的方法来操作数据库了。 总之不管是在自动扫描的方式还是在xml配置文件里面进行注入,都是为了不让程序员不停的new对象,使用起来更灵活。
还没有评论,来说两句吧...