Spring(四)

96 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情

有参构造注入

在要注入属性的bean标签中进行配置。前提是该类有提供对应的有参构造。

 <!--使用有参构造进行注入 使用constructor-arg标签 构造器里面有多少参数,就写多少-->
    <bean class="com.sangeng.domain.Student" id="student2" >
        <constructor-arg name="name" value="自挂东南枝"></constructor-arg>
        <constructor-arg name="age" value="20"></constructor-arg>
        <constructor-arg name="id" value="30"></constructor-arg>
        <constructor-arg name="dog" ref="dog"></constructor-arg>
    </bean>

使用有参构造进行注入 使用constructor-arg标签 构造器里面有多少参数,就写多少

Lombok

配置lombok后只需要添加注解,就可以实现set和get方法,可以通过idea快捷键alt + 7 显示方法,可以查看到方法

image.png 前提需要安装插件

image.png

①导入依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>

②增加注解

@Data //根据属性生成set,get方法
@NoArgsConstructor //生成空参构造
@AllArgsConstructor //生成全参构造
public class Phone {
    private double price;
    private String name;
    private String password;
    private String path;
}

SPEL表达式

我们可以再配置文件中使用SPEL表达式。写法如下:

里边可以写一些简单计算,也可以写一些beanID

        <property name="age" value="#{20 + 10}"/>
        <property name="car" value="#{car}"/>    等价于   <property name="car" ref="car"/>

注意:SPEL需要写到value属性中,不能写到ref属性。

配置文件

读取properties文件

我们可以让Spring读取properties文件中的key/value,然后使用其中的值。

①设置读取properties

在Spring配置文件中加入如下标签:指定要读取的文件的路径。

<context:property-placeholder location="classpath:filename.properties">

其中的classpath表示类加载路径下。

我们也会用到如下写法:classpath: *.properties 其中的 * 表示文件名任意。

引入成功后头部文件就是这样:
xmlns:context="http://www.springframework.org/schema/context"

注意:context命名空间的引入是否正确

②使用配置文件中的值

在我们需要使用的时候可以使用${key}来表示具体的值。注意要再value属性中使用才可以。例如:

<property name="propertyName" value="${key}"/>

测试运行

<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="url" value="${jdbc.url}"/>
    <property name="driverClassName" value="${jdbc.driver}"/>
    <property name="username" value="${jdbc.user}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>
 @Test
    public void testExperiment06() throws SQLException {
          private ApplicationContext iocContainer = new ClassPathXmlApplicationContext("applicationContext.xml"
        DataSource dataSource = iocContainer.getBean(DataSource.class);
​
        Connection connection = dataSource.getConnection();
        System.out.println("connection = " + connection);
    }
}

引入Spring配置文件

我们可以在主的配置文件中通过import标签的resource属性,引入其他的xml配置文件

<import resource="classpath:applicationContext-book.xml"/>

比如引入数据库的配置文件

<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="url" value="${jdbc.url}"/>
    <property name="driverClassName" value="${jdbc.driver}"/>
    <property name="username" value="${jdbc.user}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>