spring初学

Posted ygfcoder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring初学相关的知识,希望对你有一定的参考价值。

spring基础

简介

轻量级(框架api与代码耦合很低)的java开发框架

spring是开源的设计层面的框架,它解决的是业务逻辑层和其他各层的松耦合问题,它将面向接口的编程思想遍布整个应用。

spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

spring基础例

导入依赖

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.0.0.RELEASE</version>
</dependency>

创建类

public class User {
    private List<String> list;
    private Map<String,String> map;
    private String name;
}

编写配置文件

<?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 class="com.hello.bean.User" id="user">
        <property name="name" value="121"/>
        <property name="list">
            <list>
                <value>fdf</value>
                <value>fdf</value>
            </list>
        </property>
        <property name="map">
            <map>
                <entry key="age" value="18"></entry>
                <entry key="car" value="11"></entry>
            </map>
        </property>
    </bean>

</beans>

使用spring获取对象

@Test
public void test1(){
    //获取上下文对象
    ClassPathXmlApplicationContext context = 
        new ClassPathXmlApplicationContext("application.xml");
	//从上下文对象中获取类对象(根据id或者类的字节码文件)
    User user = context.getBean("user", User.class);
    System.out.println(user);
}

注:ClassPathXmlApplicationContext可加载多个配置文件

1、传入String数组

2、在加载的xml文件中使用

依赖注入

spring的配置文件中可使用三种方法为对象属性赋值

构造器注入

<bean class="com.hello.bean.User" id="user"/>
    <bean class="com.hello.bean.Admin" id="admin">
        <constructor-arg name="name" value="zhang"/>
        <constructor-arg name="pwd" value="AAd"/>
        <constructor-arg name="user" ref="user"/>
    </bean>

constructor-arg 标签对应构造器注入,name是属性名,value是属性值,ref是引用数据类型使用

注:

?

根据类对象的属性类型赋值

setter方法

类中必须要有setter方法

<bean class="com.hello.bean.User" id="user"/>
<bean class="com.hello.bean.Admin" id="admin">
    <property name="name" value="asd"/>
    <property name="pwd" value="23"/>
    <property name="user" ref="user"/>
</bean>

3、接口注入

不推荐

List与Map集合

<bean class="com.hello.bean.User" id="user">
        <property name="name" value="121"/>
        <property name="list">
                <list>
                        <value>fdf</value>
                        <value>fdf</value>
                </list>
        </property>
        <property name="map">
                <map>
                        <entry key="age" value="18"></entry>
                        <entry key="car" value="11"></entry>
                </map>
        </property>
</bean>

util命名空间

<util:list id="list">
        <value>ada</value>
        <value>ada</value>
</util:list>

p标签注入

<bean class="com.hello.bean.User" id="user"/>
<bean class="com.hello.bean.Admin" p:name="asd" p:pwd="add" p:user-ref="user"/>

spring表达式

<bean class="com.hello.bean.Teacher" id="teacher">
        <property name="user" ref="user"/>
        <property name="tname" value="#{user.name}"/>
 </bean>

bean对象的三种创建方式

默认无参构造创建对象

即直接new对象

<bean class="com.hello.bean.User" id="user"/>
<bean class="com.hello.bean.Admin" id="admin">
    <property name="name" value="asd"/>
    <property name="pwd" value="23"/>
    <property name="user" ref="user"/>
</bean>	

使用静态工厂创建对象

类:

public class People {
    String name;
}

对象工厂:

public class BeanFactory {
    public static People getPeople(){
        return new People();
    }
}

spring获取方式:

<bean id="people" class="com.hello.factory.BeanFactory" factory-method="getPeople">
        <property name="name" value="434"/>
</bean>

使用实例工厂创建对象

类:

public class People {
    String name;
}

实例工厂:

public class FactoryBean {
    public People getPeople(){
        return new People();
    }
}

从实例化工厂获取对象:

<!--实例化工厂-->
<bean class="com.hello.factory.FactoryBean" id="factoryBean"/>
<!--从工厂获取对象-->
<bean class="com.hello.bean.People" factory-bean="factoryBean" factory-method="getPeople">
        <property name="name" value="w3"/>
</bean>

以上是关于spring初学的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

Spring boot:thymeleaf 没有正确渲染片段

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

spring初学