在jeecms2.4版本中,spring技术采用了2.5.6版本,这个版本之前没有用过,和以前的用法还是有些差别,在这个版本中,spring采用了注解机制,通过组件扫描机制,将bean注入
在applicationContext。xml中,配置如下:
<context:component-scan base-package="com.jeecms,com.soft" />(配置多个包用逗号隔开)
在dao层实现类中,配置注解 @Repository
在service层实现类中,配置注解 @service
在action中,配置注解@Controller
(action的配置不是根据类路径去查找类的,而是根据controller的配置去查找类的,
例如:
<action name="Com_*" method="{1}" class="article.channelAct">
class的参数是去匹配 @Controller("article.channelAct")的
这个也是spring 组件扫描的对象。
)
service调用service时,不用写get,set方法,只用配置一下,就行了
例如:
@Autowired
private MemberMng memberMng;
由于配置了全包扫描,刚开始不知道得到bean的方式是否一样,在测试类中如何得到。
最后测试发现,还稍有不同。
第一种方式是:
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//此处bean的名字是实现类的名字
MemberMng memberMng = (MemberMng) ac.getBean("memberMngImpl");
第二种方式:
@Service("memberMng")
@Transactional
public class MemberMngImpl implements MemberMng{
}
得到bean的方式:
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//此处bean的名字是实现类的名字
MemberMng memberMng = (MemberMng) ac.getBean("memberMng");