无锡微信网站开发,泉州网站制作维护,wordpress导航转跳,制作表情包Spring框架中IOC就是将创建对象的权力反转给Spring框架#xff0c;我们无需自己创建对象#xff0c;直接在Spring框架的容器中获取即可。
bean中配置的就是需要让Spring管理的类。 XML的bean管理
先写个“HelloWorld”: bean idUser classcom.ffyc.…Spring框架中IOC就是将创建对象的权力反转给Spring框架我们无需自己创建对象直接在Spring框架的容器中获取即可。
bean中配置的就是需要让Spring管理的类。 XML的bean管理
先写个“HelloWorld”: bean idUser classcom.ffyc.spring.model.User scopesingletonproperty nameid value11/propertyproperty namename valueaaa/propertyconstructor-arg nameid value111/constructor-argconstructor-arg namename valueaaa/constructor-arg/bean
上面代码的含义就是创建单例的User对象并且实现了依赖注入。bean依赖注入的两种方式一种是属性的set方法注入property标签通过Java反射机制所以前提是User类中必须存在当前属性的set方法为属性赋值。另一种是构造方法的注入constructor-arg标签通过类中的构造方法赋值。
以上代码描述了通过bean标签实现通过Spring创建对象并赋值称为依赖注入Dependency InjectionDI。
在实际开发中并没有如此简单例如在一个类中调用另一个类使用bean标签该如何处理呢
public class UserService {UserDao userDao;public void saved(){userDao.save();}
}bean idUserDao classcom.ffyc.spring.Dao.UserDao/beanbean idUserService classcom.ffyc.spring.Service.UserServiceproperty nameuserDao refUserDao/property/bean
如上我们新建UserDao类和UserService类在UserService类中调用UserDao类中的方法使用bean管理这两个类。 使用XML我们发现工作量太大如果模块很多那每次加入一个模块就要添加一个bean。 使用注解进行bean管理
context:component-scan base-packagecom.ffyc.spring/context:component-scan
在Spring中配置当前标签就可以通过注解自动扫描指定包下的类可自动解析注解。
模型类
Data
Component(User)
Scope(prototype)
public class User {private Integer id;private String name;}
数据访问层
Data
Repository(userDao)
public class UserDao {public void save() {System.out.println(保存成功);}
}
Service层
Data
Service(userService)
public class UserService {Autowired //属性的注入Qualifier(userDao)UserDao userDao;public void saved(){userDao.save();}
}各层类使用不同的注解标签和名字。在Spring框架中一般把由Spring框架管理创建的对象称为一个bean对象与我们普通的对象不同因为Spring框架可以进行功能上的增强。
补充Spring为了每层更加清晰为了后续的扩展功能在不同层使用不同的注解标记
模型类Compontent
Service层Service
数据访问层Repository
Spring中注解的自动注入
两种方式
1Autowired Spring框架中提供的注解标签可以提供两种方式进行属性注入。
①bean名称注入 Qualifier(valuebean名称)
Data
Service(userService)
public class UserService {Autowired //属性的注入Qualifier(userDao)UserDao userDao;public void saved(){userDao.save();}
}
Data
Repository(userDao)
public class UserDao {Integer id;String name;public void save() {System.out.println(保存成功);}
}
②属性类型注入如果没有指定名称那么就是属性类型去容器中查找对应类型对象常用
Data
Service(userService)
public class UserService {Autowired //属性的注入UserDao userDao;public void saved(){userDao.save();}
}Data
Repository
public class UserDao {Integer id;String name;public void save() {System.out.println(保存成功);}
} 2Resource JDK提供的注解标签
没有给定指定名称就通过类型查找注入若给定则通过名称注入
Data
Service(userService)
public class UserService {ResourceUserDao userDao;public void saved(){userDao.save();}
}
Data
Repository
public class UserDao {Integer id;String name;public void save() {System.out.println(保存成功);}
}