Spring的基础配置
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。他可以依靠配置来对实体类进行属性的设置和修改。在用到实体类的地方时,也可以直接调用配置而不需要重新实例化一个实体类。
使用spring需要导入相对应的jar包这里我们使用maven导入
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.5</version>
</dependency>
实体类:
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show() {
System.out.print("name="+name);
}
}
spring的xml配置:(创建在resource文件下)
<?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为对象名,而class则是实体类位置
其中bean标签的property的标签就为类中的属性,给类中的属性赋值
name为类中set方法后面跟的字段名(找的是setname),value为传进去的值
这里用到的就是反射的机制
<bean id="user" class="com.nicht.pojo.User">
<property name="name" value="孙笑川"/>
</bean>
</beans>
测试:
@Test
public void test2(){
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");xml配置
// 在xml配置所对应的id名,返回的实体类的Class(xxx.class)
User user = context.getBean("user",User.class);
user.show();
}
当实体类中存在其他实体类时:
<?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="users" class="com.kuang.pojo.User"/>
<bean id="work" class="com.nicht.poko.Work">
<!--引用另外一个bean , 不是用value 而是用 ref-->
<property name="user" ref="users"/>
</bean>
</beans>
当实体类只有有参构造时:
因为Spring的配置运用的是反射的机制,所以我们绕不开有参构造。
所以我们在用配置来设置实体类时,我们也要对有参构造进行传递参数。
有三种方法在配置中给设置有参构造:
第一种根据index参数下标设置:
<bean id="user" class="com.nicht.pojo.User">
<!-- index指构造方法 , 下标从0开始 -->
<constructor-arg index="0" value="nicht"/>
</bean>
第二种根据参数名字设置 :
<bean id="user" class="com.nicht.pojo.User">
<!-- name指参数名 -->
<constructor-arg name="name" value="nicht"/>
</bean
第三种根据参数类型设置:
<bean id="user" class="com.nicht.pojo.User">
<constructor-arg type="java.lang.String" value="nicht"/>
</bean>
推荐第二种
别名的设置(alias)
alias 设置别名 , 为bean设置别名 , 可以设置多个别名
<!--设置别名:在获取Bean的时候可以使用别名获取-->
<alias name="user" alias="test"/>
也可以在bean中创建时设置别名:
<bean id="user" name="user1,user2" class="com.nicht.pojo.user">
<property name="name" value="孙笑川"/>
</bean>
<!--name就是为别名的设置 -->