Spring介绍 Spring配置文件
快速入门
补充知识点 – 关于java的三层结构设计
一般情况下就是在service层里面new一个dao层对象,现在使用Sping之后就是从Spring框架中获取dao层对象。
第一个Spring程序
首先先创建一个maven项目
之后填写公司名,项目名称,之后在setting中配置maven
注意:有的需要配置到bin目录下,有的则不需要配置到目录下。
导入Spring开发的基本包坐标
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
</dependencies>
编写dao层接口和实现类
package dao;
public interface UserDao {
public void save();
}
package dao.impl;
import dao.UserDao;
public class UserDaoImpl implements UserDao {
public void save() {
System.out.println("save running");
}
}
创建Spring核心配置文件 – 一般取名字是applicationContext.xml
在Spring配置文件中配置UserDaoImpl
<?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="userDao" class="dao.impl.UserDaoImpl"></bean>
</beans>
使用SpringAPI获取Bean实例
package demo;
import dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserDaoDemo {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao)app.getBean("userDao");
userDao.save();
}
}
Bean标签范围配置
singleton的话,容器中只有一个dao层对象,如果使用prototype,容器中会有多个dao层对象。
测试方法就是new出两个对象,检查两个对象的地址是否一致。
当scope的取值为singleton时,容器中只有一个对象,这个bean对象的出现时机:当Spring配置文件被加载时候(就时Spring容器创建的时候),Bean对象同时创建。
当scope取值为prototype时,Bean对象是多个,时机:当调用getBean()时候实例化Bean对象。
测试上面两种情况的方法就是构造器+断点。
依赖注入
原始情况下,需要向容器中拿两次。
解决方案 – 内部注入,拿一次
通过set方法注入。-- 修改UserServiceImpl层
public class UserServiceImpl implements UserService {
UserDao userDao = null;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void save() {
/*ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao)app.getBean("userDao");*/
userDao.save();
}
}
就是在配置文件中进行配置,然后通过set方法注入到成员变量userDao中。
配置文件
<?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="userDao" class="dao.impl.UserDaoImpl" scope="prototype"></bean>
<bean id="userService" class="service.impl.UserServiceImpl" scope="prototype">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
<property name="userDao" ref="userDao"></property>
name就是set方法的名字 -- setUserDao将set去掉,然后将U改为小写u,ref就是上面那个id名字
通过构造器注入 – 就是通过构造器将成员变量userDao赋值
public class UserServiceImpl implements UserService {
UserDao userDao = null;
public UserServiceImpl() {
}
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
/*public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
*/
public void save() {
/*ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao)app.getBean("userDao");*/
userDao.save();
}
}
配置文件
<bean id="userService" class="service.impl.UserServiceImpl" scope="prototype">
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
name指的是构造器中的参数名字,ref指的还是上面的id
注入普通的数据类型
public class UserDaoImpl implements UserDao {
private String userName;
private String age;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public void save() {
System.out.println(userName + "----" + age);
System.out.println("save running");
}
}
<bean id="userDao" class="dao.impl.UserDaoImpl" scope="prototype">
<property name="userName" value="孙悟空"></property>
<property name="age" value="18"></property>
</bean>
注入List,Map,Properties
private List<String> list;
private Map<String,String> userMap;
private Properties properties;
<bean id="userDao" class="dao.impl.UserDaoImpl">
<property name="list">
<list>
<value>aaa</value>
<value>aaa</value>
<value>aaa</value>
</list>
</property>
<property name="userMap">
<map>
<entry key="1" value="A"></entry>
<entry key="2" value="B"></entry>
<entry key="3" value="C"></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="pop">lala</prop>
<prop key="pop">lala</prop>
<prop key="pop">lala</prop>
</props>
</property>
</bean>
import和知识点
实际开发中,Spring的配置内容非常多,这就导致Spring配置很繁杂且体积很大,所以,可以将部分配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载
<import resource="applicationContext-xxx.xml"/>
Spring的重点配置
<bean>标签
id属性:在容器中Bean实例的唯一标识,不允许重复
class属性:要实例化的Bean的全限定名
scope属性:Bean的作用范围,常用是Singleton(默认)和prototype
<property>标签:属性注入
name属性:属性名称
value属性:注入的普通属性值
ref属性:注入的对象引用值
<list>标签
<map>标签
<properties>标签
<constructor-arg>标签
<import>标签:导入其他的Spring的分文件
文章来源: blog.csdn.net,作者:花花叔叔,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_52077949/article/details/122792162
- 点赞
- 收藏
- 关注作者
评论(0)