<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> ? ? <groupId>org.springframework</groupId> ? ? <artifactId>spring-webmvc</artifactId> ? ? <version>5.3.9</version> </dependency> ?
1、UserDao接口
public interface UserDao {
void getUser();
}
2、UserDaoImpl实现类
public class UserDaoImpl implements UserDao {
public void getUser() {
System.out.println("默认获取用户的数据");
}
}
3、UserService业务接口
public interface UserService {
void getUser();
}
4、UserServiceImpl业务实现类
public class UserServiceImpl implements UserService{
private UserDao userDao;
//用set进行动态实现值的注入
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
public void getUser() {
userDao.getUser();
}
}
使用set方法,使得业务实现类可以适应多种不同的实现类
4、IOC创建对象方式
4.1使用无参构造创建对象
1、类对象
public class User {
private String name;
public User() {
System.out.println("User的无参构造");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println("name="+name);
}
}
2、beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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.xsd">
<bean id="user" class="com.kuang.pojo.User">
<property name="name" value="秦疆"/>
</bean>
</beans>
3、测试类
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
User user = (User) context.getBean("user");
user.show();
}
}
4.2使用有参构造创建对象
1、 第一种下标赋值
<bean id="user" class="com.kuang.pojo.User">
<constructor-arg index="0" value="狂神说Java"/>
</bean>
2、类型
<!-- 第二种类型:通过类型创建,不建议使用-->
<bean id="user" class="com.kuang.pojo.User">
<constructor-arg type="java.lang.String" value="qingjiang"/>
</bean>
3、参数名
<!--第三种,直接通过参数名来设置-->
<bean id="user" class="com.kuang.pojo.User">
<constructor-arg name="name" value="秦疆"/>
</bean>
总结:在配置文件加载的时候,其中容器中管理的对象就已经初始化了
5、spring配置
5.1别名
<!-- alias为取别名,添加了别名,我们也可以使用别名获取到这个对象-->
<alias name="user" alias="userNew"/>
5.2 Bean配置
<!--
id:bean的唯一标识符,也就是相当于我们学的对象名
class:bean对象所对应的全限定名:包名+类型
name:也是别名,而且name可以同时取多个别名
-->
<bean id="userT" class="com.kuang.pojo.UserT" name="user2,u2">
<property name="name" value="西部开源"/>
</bean>
5.3 import
这个import,一般用于团队开发使用,他可以将多个配置文件,导入合并为一个
假设,现在项目中有多个人开发,这三个人负责不同的类开发,不同的类需要注册在不同的bean中,我们可以利用import将所有人的beans.xml合并为一个总的
张三
李四
王五
applicationContext.xml
<import resource="beans.xml"/>
<import resource="beans2.xml"/>
<import resource="beans3.xml"/>
使用的时候,直接使用总的配置就可以了
6、依赖注入
6.1 构造器注入
6.2 Set方式注入【重点】
依赖注入:set注入
? ?依赖:bean对象的创建依赖于容器
? 注入:bean对象中的所有属性,由容器注入
【环境搭建】
1、复杂类型
public class Address {
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
2、真实测试对象
public class Student {
private String name;
private Address address;
private String[] books;
private List<String> hobbys;
private Map<String,String> card;
private Set<String> games;
private String wife;
private Properties info;
}
3、beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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.xsd">
<bean id="student" class="com.kuang.pojo.Student">
<!--第一种,普通值注入,value-->
<property name="name" value="秦疆"/>
</bean>
</beans>
4、测试类
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Student student = (Student) context.getBean("student");
System.out.println(student.getName());
}
}
6.3?拓展方式注入
p、c
|