一、首个spring应用
**文字描述:**
1、创建maven项目
2、pom.xml中指定spring-context坐标
3、创建具体接口及其实现类
4、创建spring核心配置文件(常以applicationContext命名),并配置接口的实现类,如:
<bean id="userDao" class="com.dao.impl.UserDaoImpl"/>,id随意取名,意为指定该类;class指定该类的全限定类名
5、在所使用的类中通过spring相关方法获取bean实例(即userDao的实现类对象)
**代码描述:**
1、在pom.xml文件中
< dependencies>
< dependency>
< groupId> org.springframework</ groupId>
< artifactId> spring-context</ artifactId>
< version> 4.3.9.RELEASE</ version>
</ dependency>
</ dependencies>
2、创建接口及其实现类
public interface UserDao {
public void save ( ) ;
}
public class UserDaoImpl implements UserDao {
@Override
public void save ( ) {
System. out. println ( "UserDao save method running...." ) ;
}
}
3、创建配置文件并配置,在applicationContext.xml文件中:
< bean id = " userDao" class = " com.dao.impl.UserDaoImpl" />
4、在所使用的类中通过spring相关方法获取bean实例
public class UserDaoTest {
public static void main ( String[ ] args) {
ApplicationContext app = new ClassPathXmlApplicationContext ( "applicationContext.xml" ) ;
UserDao userDao = ( UserDao) app. getBean ( "userDao" ) ;
userDao. save ( ) ;
}
}
二、部分配置文件
**代码解释:**
其中,
id属性指定类的唯一名称,任意取名;
class属性指定全限定类名(全包名);
scope属性默认为singleton,单实例(即创建的多个实例始终指向同一个对象),prototype为多实例(即创建的多个实例彼此所指对象不同);
init-method属性为指定初始化方法,spring容器创建完成后开始初始化;
destroy-method属性为指定销毁方法,spring容器被销毁时执行此方法;
factory-method属性指定工厂类中获取实例的方法,此时class属性应设为工厂类的全限定类名
**关于scope属性:**
scope为默认值singleton时,创建单个实例对象;对象创建时机:加载配置文件完成即创建,随spring容器销毁而销毁
scope为默认值prototype时,创建多个实例对象;对象创建时机:getBean()方法被调用时创建,对象长时间不用将被Java垃圾回收器回收
三、依赖注入
**概念:**简单来说,就是为了解耦与方便维护和开发,让数据的绑定在spring中完成,使用时直接通过spring获取。
**代码描述:**
< bean id = " user1" class = " com.domain.User" >
< property name = " name" value = " 李四" />
< property name = " age" value = " 24" />
</ bean>
< bean id = " user2" class = " com.domain.User" >
< property name = " name" value = " 王五" />
< property name = " age" value = " 25" />
</ bean>
< bean id = " userService" class = " com.service.impl.UserServiceImpl" >
< constructor-arg name = " userDao" ref = " userDao" />
< property name = " list" >
< list>
< value> aaa</ value>
< value> bbb</ value>
< value> ccc</ value>
</ list>
</ property>
< property name = " userMap" >
< map>
< entry key = " user1" value-ref = " user1" />
< entry key = " user2" value-ref = " user2" />
</ map>
</ property>
< property name = " properties" >
< props>
< prop key = " pro1" > pro1</ prop>
< prop key = " pro2" > pro2</ prop>
< prop key = " pro3" > pro3</ prop>
</ props>
</ property>
</ bean>
获取绑定数据:
public class UserControllerTest {
public static void main ( String[ ] args) {
ApplicationContext app = new ClassPathXmlApplicationContext ( "applicationContext.xml" ) ;
UserService userService = app. getBean ( UserService. class ) ;
userService. save ( ) ;
}
}
运行结果:
四、其它补充
多配置文件时,可通过配置分文件的导入:
< import resource = " applicationContext-service.xml" />
< import resource = " applicationContext-dao.xml" />