Spring的配置和使用
依赖:
在maven 构建的spring项目中,需要导入以下依赖
<!-- AOP需要的包 -->
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.6</version> </dependency>
<!--使用spring-webmvc可自动导入其他依赖-->
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.4</version> </dependency>
<!--整合Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
<!--整合Mybatis需要使用spring自己的JDBC-->
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.9.RELEASE</version> </dependency>
<!--lombok mybatis 简化开发使用-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
配置文件:
applicationContext.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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 类型 变量名 = new 类型()--> <!-- id === 变量名--> <!-- class=== 类型()--> <!-- property===属性赋值,SET注入--> <bean id="user" class="com.wpz.User"> <property name="str" value="Hello come on!"/> <!-- collaborators and configuration for this bean go here --> </bean> <bean id="DaoImpl" class="com.wpz.dao.UserDaoImpl"></bean> <!--别名--> <alias name="DaoImpl" alias="dao"></alias> <!-- more bean definitions go here --> </beans>
<bean> 标签:
<bean> 标签创建对象 与 new 实例的对比
<!-- 类型 变量名 = new 类型()--> <!-- id === 变量名--> <!-- class=== 类型()--> <!-- property===属性赋值,SET注入--> <bean id="user" class="com.wpz.User"> <property name="str" value="Hello come on!"/> <!-- collaborators and configuration for this bean go here --> </bean> <bean id="DaoImpl" class="com.wpz.dao.UserDaoImpl"></bean> <!--别名--> <alias name="DaoImpl" alias="dao"></alias>
bean对象元素的注入
//实例类
public class Student { private String name; private String wifi; private Adress adress; private String[] books; private List<String> hobbies; private Map cards; private Properties prop; private Set<String> games; }
配置:
<bean id="addr" class="com.wpz.Adress"> <property name="addr" value="DaLian"></property> </bean> <bean id="stu" class="com.wpz.Student"> <!-- 第一种 普通值注入--> <property name="name" value="wpz"/> <!-- 第二种 bean注入 ref--> <property name="adress" ref="addr"/> <!-- 数组--> <property name="books"> <array> <value>红楼梦</value> <value>周易</value> <value>吕氏</value> </array> </property> <!-- list--> <property name="hobbies"> <list> <value>听歌</value> <value>看戏</value> </list> </property> <!-- map--> <property name="cards"> <map> <entry key="Id" value="220714199912121234"></entry> <entry key="stuId" value="20082041"></entry> </map> </property> <!-- set--> <property name="games"> <set> <value>QQQ</value> <value>WWW</value> <value>EEE</value> </set> </property> <!-- properties--> <property name="prop"> <props> <prop key="name">root</prop> <prop key="pwd">admin</prop> </props> </property> <!-- null--> <property name="wifi"> <value>null</value> </property> </bean>
IOC 创建对象的方式
-
默认使用无参构造方法构造(如上)
-
-
通过下标赋值 <constructor-arg index ="0" value="xxx"/>
-
通过类型 ,不建议使用 <constructor-arg type="java.lang.string" value="xxx"/>
-
直接通过参数名来设置 <constructor-arg name="username" value="xxx"/> ----常用
-
bean对象的属性
-
id 唯一标识符,相当于对象名
-
class bean对象所对应的全限定名,类型
-
name 也是别名,可以同时取多个别名,用逗号或空格或分号隔开
-
scope 作用域范围 :singleton(默认)、prototype(原型模式 每次从容器中get 的时候,都产生一个新对象)、request、session
P 标签和C 标签:
配置:
xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
使用:
<!-- 需要无参构造--> <bean id="usr" class="com.wpz.User" p:str="wwwpz"></bean> <!-- 需要有参构造--> <bean id="usr" class="com.wpz.User" c:str="ddd" autowire="byName"></bean>
<import>
团队开发时,通过import将配置文件合并汇总
<import resouce = "beans.xml"/>