spring @Repository 和@Service,@Controller使用方法

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 21:03   5108   0

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 stub
  ApplicationContext 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;
@Service
public class UserDaoImpl implements UserDao{
// private SqlSessionFactory sqlSessionFactory; 
// public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
//  this.sqlSessionFactory=sqlSessionFactory;
// }
 @Override
 public User2 getUser2() {
  
  return null;
 }

 @Override
 public 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;
 }
}


这样在启动后就会打印出user实现类方法的内容。

注:至于注解中@Service()的括号中要不要加字符串,如@Service("userDao").这里是加不加,加什么样的字符都无所谓,因为只有一个实现类,当有多个实现类是,也可以不用填,在下面的实例二中,会通过@Qualifier()来指定特定的实现了。如果填了,要保证两个字符串不相等即可。一般项目中安全起见会以实现类名为准&#x`spingmvc 三层架构区分开的别名。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP