您的位置:首页 > 编程语言 > Java开发

Spring第六讲学习笔记,使用注解开发。Repository,Service,Controller

2017-06-14 20:44 676 查看
把spring中user模块的user.xml配置文件中,之前为UserAction配置userService的时候,struts的配置文件

中的class可以填这个bean的id,现在可以把这种方法干掉。仍然使用以前struts的方法,

class="action.UserAction",而不是bean的ID。这还是让struts来管理action。

在struts的配置文件中,让struts创建userService对象,struts的配置文件中class写

Action.UserAction。这样为注解开发提供了条件。

使用注解开发,
1.修改Spring头文件,增加context。

  省去Spring模块的user.xml中UserDao中sqlSessionFactory,  

UserService中的userDao,   

UserAction中的userService的bean注入

2.在Spring配置文件中写
<context:component-scan base-package="dao.imp"/>
<context:component-scan base-package="service.imp"/>
<context:component-scan base-package="action"/>
这个时候,突然发现如果包名前缀是相同的,如cn.sxt....,那么这里就能直接写

<context:component-sacn base-package:"cn.sxt"/>

3.在UserDaoImpl中自动注入sqlSessionFactory
在UserDao的实现类的上一行写

@Repository("userDao") :数据仓库,相当于<bean id="userDao" class="实现类">,


这里是在实现类里,@Repository括号里的相当于id,

可以通过beanFactory.getBean("userDao")拿到UserDao接口的实现类。

接下来自动注入sqlSessionFactory字段,调用父类的setSqlSessionFactory方法

在set方法上写@Autowired以便自动注入,要么在字段上写。

@Repository("userDao")
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{
@Autowired
@Override
public voidsetSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
// TODO Auto-generated method stub
super.setSqlSessionFactory(sqlSessionFactory);
}
4.在UserServiceImpl中自动注入userDao
在类的上一行写@Service("userService"),如果填写括号里的userService,那么默认是类名,

就是@Service("UserServiceImpl")

在userDao上写@Autowired,当然因为是自动注入,所以必须要有get和set方法

@Service("userService")
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
5.在Action中自动注入userService
在类的上一行写@Controller("userAction"),说白了,括号就是给类添加一个标签,

在测试类中的beanFactory.getBean("userAction")能够获取到对应类的实例对象。

在userService上写@Autowired,为userService自动注入,同理必须有set和get方法



@Controller("userAction")

@Scope("prototype")

public class UserAction implements Action{
@Autowired
private UserService userService;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐