spring @Repository 和@Service,@Controller使用方法
来源:互联网 发布:理想禁区 知乎 编辑:程序博客网 时间:2024/06/03 23:08
Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释;
实际使用中
实例一:@Repository
上图中的application3.xml是配置文件,test2是测试类。其他的不用管;
<?xml version="1.0" encoding="UTF-8"?><beans xmlns:="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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="com.introduce.Dao"></context:component-scan></beans>配置文件是启动spring容器时扫描com.introduce.Dao所有的注解。
test2测试类
import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.introduce.Dao.UserDao;public class Test2 {public static void main(String[] args) {// TODO Auto-generated method stubApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext3.xml");UserDao userDao=ac.getBean(UserDao.class);userDao.getUser2("haha");}}
UserDao接口和它的实现类UserDaoImpl
package com.introduce.Dao;import com.introduce.Model.User2;public interface UserDao{User2 getUser2();User2 getUser2(String name);}
package com.introduce.Dao;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.springframework.stereotype.Repository;import org.springframework.stereotype.Service;import com.introduce.Model.User2;@Servicepublic class UserDaoImpl implements UserDao{//private SqlSessionFactory sqlSessionFactory; //public UserDaoImpl(SqlSessionFactory sqlSessionFactory){//this.sqlSessionFactory=sqlSessionFactory;//}@Overridepublic User2 getUser2() {return null;}@Overridepublic User2 getUser2(String name) {// TODO Auto-generated method stub//SqlSession sqlSession=sqlSessionFactory.openSession();//User2 user2=sqlSession.selectOne("com.introduce.Modle.User2.getUser2",name);User2 user2=new User2();user2.setAge(22);System.out.println(name);return user2;}}
注:至于注解中@Service()的括号中要不要加字符串,如@Service("userDao").这里是加不加,加什么样的字符都无所谓,因为只有一个实现类,当有多个实现类是,也可以不用填,在下面的实例二中,会通过@Qualifier()来指定特定的实现了。如果填了,要保证两个字符串不相等即可。一般项目中安全起见会以实现类名为准,避免重复。
实例二:@Repository 与service一起使用,并当有多个实现类时,如何指定某个实现类。
测试类 main方法:
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.introduce.Dao.UserDao;import com.introduce.Dao.UserServiceImpl;import com.introduce.Dao.UserService;public class Test2 {public static void main(String[] args) {// TODO Auto-generated method stubApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext3.xml");UserService userService=ac.getBean(UserService.class);userService.ff();//UserDao userDao=ac.getBean(UserDao.class);//userDao.getUser2("haha");}}
main方法中找到容器中的userService.class类。
进入到service接口和实现类
package com.introduce.Dao;public interface UserService {void ff();}
package com.introduce.Dao;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Service;import com.introduce.Dao.UserDao;@Servicepublic class UserServiceImpl implements UserService1{@Autowired@Qualifier("userDaoImpl2")UserDao userDao;public void ff(){userDao.getUser2("oo");}}
在service的实现类中有两点,一是加@Service;二是使用@Qualifier()指定某个实现类。@Qualifier()括号中的字符串某人是实现类的类名首字母小写,当然也可以自己定义,如在实现类的其中一个service("s1"),另一个service("s2");即可。下面的代码是没加的。可以手动加,然后再@Qualifier('s2')就会执行userDaoImpl类的方法。
dao层的三个类,一个接口,两个实现类
package com.introduce.Dao;import com.introduce.Model.User2;public interface UserDao{User2 getUser2();User2 getUser2(String name);}
package com.introduce.Dao;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.springframework.stereotype.Repository;import org.springframework.stereotype.Service;import com.introduce.Model.User2;@Servicepublic class UserDaoImpl implements UserDao{//private SqlSessionFactory sqlSessionFactory; //public UserDaoImpl(SqlSessionFactory sqlSessionFactory){//this.sqlSessionFactory=sqlSessionFactory;//}@Overridepublic User2 getUser2() {return null;}@Overridepublic User2 getUser2(String name) {// TODO Auto-generated method stub//SqlSession sqlSession=sqlSessionFactory.openSession();//User2 user2=sqlSession.selectOne("com.introduce.Modle.User2.getUser2",name);User2 user2=new User2();user2.setAge(22);System.out.println(name);return user2;}}
package com.introduce.Dao;import org.springframework.stereotype.Service;import com.introduce.Model.User2;@Servicepublic class UserDaoImpl2 implements UserDao{@Overridepublic User2 getUser2() {return null;}@Overridepublic User2 getUser2(String name) {// TODO Auto-generated method stub//SqlSession sqlSession=sqlSessionFactory.openSession();//User2 user2=sqlSession.selectOne("com.introduce.Modle.User2.getUser2",name);User2 user2=new User2();user2.setAge(22);System.out.println(name);return user2;}}
细心的朋友可以看到我的userDaoImpl和userDaoImpl2两个实现类都是使用的@Service。可是程序也能正常执行。如果把@Service换成@Repository程序
也是可以正常执行的。所以二者并没有功能上的差别,只是为了配合spingmvc 三层架构区分开的别名。
阅读全文
0 0
- spring @Repository 和@Service,@Controller使用方法
- spring注解: @componet 、@Repository、@Service 和 @Controller
- Spring注解@Repository、@Service、@Controller 和 @Component
- Spring 注解(@Repository 、@Service 和 @Controller )
- :@Repository、@Service 和 @Controller。
- Spring注解@Repository、@Service、@Controller
- spring注解:@Repository、@Service、@Controller
- Spring @Component、@Repository、@Service、@Controller
- Spring注解的使用和区别:@Component、@Service、@Repository、@Controller
- Spring注解的使用和区别:@Component、@Service、@Repository、@Controller
- Spring @Repository、@Service、@Controller 和 @Component 注解作用
- spring的@compont和@service以及@controller,@repository区别
- Spring里面的@Repository,@Service,@Controller和@Component
- @Repository、@Service、@Controller 和 @Component
- @Repository、@Service、@Controller 和 @Component
- @Component 、@Repository、@Service 和 @Controller
- @Repository、@Service、@Controller 和 @Component
- @Repository、@Service、@Controller 和 @Component
- Rank Scores
- bzoj1150
- Java内存溢出
- 曲线拟合
- Oracle 联机重做日志文件(ONLINE LOG FILE)
- spring @Repository 和@Service,@Controller使用方法
- systemctl添加mysql服务
- 图形用户界面
- Android的onCreateOptionsMenu()创建菜单Menu
- 各种焦点图轮播
- 一种分布式系统下的自增主键实现方法
- DOS、前后端交互、http、node基础
- ADT
- Redis的持久化