在ssh框架集成中,通过spring的Ioc(DI)实现对象的控制反转,把bean对象的创建和管理交给spring的容器。从而实现各层之间的松耦合。
spring注解方式实现bean对象的注入:
spring2.5之前spring通过@Component加在对应的类上就可以实现bean对象的装配。spring2.5细化了各层bean组件装配。并且对注解追加了更多语义。
在dao层用细化了的@repostory
在service层用细化了的@service
在action层用细化了的@Controller三种方式实现各层对象的装载
其中涉及到各层对象的引入也一样需要注解的方式实现,实际上通过注解的方式,spring的容器在遇到注解之后就自动的调用对应的set方法所以。可以省略掉
的对应的set方法,以下是自己实现ssh框架继承通过set注入到注解注入的改版配置
知识点:@Resource和@Autoware有小区别,前者是按ype(byType)实现注入,而后者是按name(byName)实现注入
dao层对象装配
@Repository(@Component)实现dao层对象的装配
public class EmployeeDaoImpl extends HibernateDaoSupport implements com.spring.dao.IEmployeeDao {
@Autowired
public void setSessionFactoryOverride(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
List<Emp………………
解释:装配dao层对象必须要实例化sessionFactory对象(1)要么在xml文件中
<bean id="iiemployeeDaoImpl" class="com.spring.dao.impl.EmployeeDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>配置
要么(2)通过上述代码中@Autowired或者@Resource装配sessionFactory对象
service层bean对象装配
@Service
public class EmployeeServiceImpl implements IEmployeeService {
//把dao层对象住进来
/@Resource(name="iemployeeDaoImpl")*/
@Resource
private IEmployeeDao iemployeeDaoImpl;
//删掉set,get方法
public boolean saveEmployee(Employee e) throws Exception {
return iemployeeDaoImpl.saveEmployee(e);
}
public boolean deleteEmployee(Employee e) throws Exception {
return iemployeeDaoImpl.deleteEmployee(e);
@Resource这里定义了name="iemployeeDaoImpl"那么必须在xml的配置文件中定义bean并指明改id,因为spring
会根据name去匹配对应的id如果找不到就报异常,这里一般可以不配置name.则spring默认的装配dao层类的首字母
小写的bean组件。
如果指定了@Service("aa")业务层对象的名称
public static void main(String[] args) {
BeanFactory factory=new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
IEmployeeService service=(IEmployeeService)factory.getBean("aa");
System.out.println(service); 结果:com.spring.service.impl.EmployeeServiceImpl@55d93d
}则可以通过代码验证是否获取了aa这个id所代表的业务层对象,验证是可以通过的。
action层bean对象组装
@Controller
public class EmployeeAction extends ActionSupport{
@Autowired
private IEmployeeService employeeService;
private int eid;
private List<Employee> emplist=new ArrayList<Employee>();
private Employee employee;
public int getEid() {
return eid;
上述spring通过注解的方式实现bean对象的装配,这样配置文件中不用配置bean属性,也不用在set方法。这些都让spring容器帮你完成。很方便。