Spring介绍 Spring配置文件

简介: Spring介绍 Spring配置文件

快速入门


补充知识点 – 关于java的三层结构设计


一般情况下就是在service层里面new一个dao层对象,现在使用Sping之后就是从Spring框架中获取dao层对象。


15.png16.png


第一个Spring程序


首先先创建一个maven项目


14.png

13.png


之后填写公司名,项目名称,之后在setting中配置maven


12.png

11.png


注意:有的需要配置到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


10.png


在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标签范围配置


9.png


singleton的话,容器中只有一个dao层对象,如果使用prototype,容器中会有多个dao层对象。

测试方法就是new出两个对象,检查两个对象的地址是否一致。


当scope的取值为singleton时,容器中只有一个对象,这个bean对象的出现时机:当Spring配置文件被加载时候(就时Spring容器创建的时候),Bean对象同时创建。


当scope取值为prototype时,Bean对象是多个,时机:当调用getBean()时候实例化Bean对象。


测试上面两种情况的方法就是构造器+断点。


依赖注入


原始情况下,需要向容器中拿两次。


8.png


解决方案 – 内部注入,拿一次


7.png


通过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的分文件


相关文章
|
4月前
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
927 0
|
1月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
85 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
24天前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
1月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
49 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
2月前
|
消息中间件 NoSQL 安全
(转)Spring Boot加载 不同位置的 application.properties配置文件顺序规则
这篇文章介绍了Spring Boot加载配置文件的顺序规则,包括不同位置的application.properties文件的加载优先级,以及如何通过命令行参数或环境变量来指定配置文件的名称和位置。
|
3月前
|
Java Spring 传感器
AI 浪潮席卷,Spring 框架配置文件管理与环境感知,为软件稳定护航,你还在等什么?
【8月更文挑战第31天】在软件开发中,配置文件管理至关重要。Spring框架提供强大支持,便于应对不同环境需求,如电商项目的开发、测试与生产环境。它支持多种格式的配置文件(如properties和YAML),并能根据环境加载不同配置,如数据库连接信息。通过`@Profile`注解可指定特定环境下的配置生效,同时支持通过命令行参数或环境变量覆盖配置值,确保应用稳定性和可靠性。
62 0
|
3月前
|
XML Java 数据库连接
深入解析 Spring 配置文件:从基础到高级
【8月更文挑战第3天】Spring配置文件是构建与管理Spring应用的核心,它涵盖了从基础到高级的各种配置技巧。基础配置采用`.xml`格式定义Bean及其依赖;中级配置包括设置Bean作用域及引入属性文件;高级配置则涉及AOP、事务管理和与其他框架的整合。熟练掌握这些配置能帮助开发者构建出更为灵活且易维护的应用系统。
|
4月前
|
存储 安全 Java
Spring Boot中的配置文件加密
Spring Boot中的配置文件加密
|
5月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
55 1
|
6月前
|
Java 容器 Spring
Spring的加载配置文件、容器和获取bean的方式
Spring的加载配置文件、容器和获取bean的方式
52 3
Spring的加载配置文件、容器和获取bean的方式