java_spring:day02

快速入门:

pom文件添加依赖jar包:
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>5.2.7.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.2.7.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-beans</artifactId>
  <version>5.2.7.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-expression -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-expression</artifactId>
  <version>5.2.7.RELEASE</version>
</dependency>
<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.2</version>
</dependency>
写一个UserService接口
public interface UserService {

    public void add();
}
写一个类实现UserService接口
public class UserServiceImpl implements UserService {

    public void add() {
        System.out.println("增加用户。。。。。");
    }
}
beans文件
<?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-->

    <bean id="userService" class="com.hetl.day01.impl.UserServiceImpl"></bean>

</beans>
测试
@Test
public void test01(){
        /*
        //以前使用UserService的方式
        UserService u = new UserServiceImpl();
        u.add();

         */

        //从spring容器中获取UserService
        //加载beans.xml文件 内部就会创建对象
        ApplicationContext c = new ClassPathXmlApplicationContext("beans.xml");
        //从spring容器获取userService对象

        UserService u1 = (UserService) c.getBean("userService");
        u1.add();

        UserService u2 = (UserService) c.getBean("userService");
        u2.add();

        System.out.println(u1);
        System.out.println(u2);

    }
输出:
增加用户。。。。。
增加用户。。。。。
com.hetl.day01.impl.UserServiceImpl@58c1670b
com.hetl.day01.impl.UserServiceImpl@58c1670b

u1与u2为同一个值。

依赖注入:

为UserServiceImpl配置get、set方法
public class UserServiceImpl implements UserService {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    public void add() {
        System.out.println("增加用户。。。。。"+name);
    }
}
在beans.xml进行注入
<?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-->

    <bean id="userService" class="com.hetl.day01.impl.UserServiceImpl">
        <!--依赖注入,调用属性的set方法-->
        <property name="name" value="李四"/>
    </bean>

</beans>
测试输出
增加用户。。。。。李四
增加用户。。。。。李四

spring容器加载beans.xml的三种方式

第一种 ClassPathXmlApplicationContext(最常用)
第二种 文件系统路径获取配置文件
第三种 使用BeanFactory

    @Test
    public void test02(){
        //spring容器加载的三种方式
        //第一种 ClassPathXmlApplicationContext
        ApplicationContext c = new ClassPathXmlApplicationContext("beans.xml");
        UserService u = (UserService) c.getBean("userService");
        u.add();

        //第二种 文件系统路径获取配置文件
        ApplicationContext c1 = new FileSystemXmlApplicationContext("D:\\along_he\\spring_study\\src\\main\\resources\\beans.xml");
        UserService u1 = (UserService) c1.getBean("userService");
        u1.add();

        //第三种 使用BeanFactory
        BeanFactory bf  = new XmlBeanFactory(new FileSystemResource("D:\\along_he\\spring_study\\src\\main\\resources\\beans.xml"));
        UserService u2 = (UserService) bf.getBean("userService");
        u2.add();

    }

BeanFactory与ApplicationContext的区别

BeanFactory,第一次getBean时才会初始化Bean,采用了延迟加载的方式
ApplicationContext是BeanFactory的扩展,提供了更多的服务功能,及时加载。

装配Bean

1.在Beans.xml文件中写一个

<bean id="userService" class="com.hetl.day01.impl.UserServiceImpl">
        <!--依赖注入,调用属性的set方法-->
        <property name="name" value="李四"/>
    </bean>

2.通过静态工厂

<bean id="userService1" class="com.hetl.day01.factory.UserServiceFactory" factory-method="creatUserService">
        
    </bean>
public class UserServiceFactory {

    public static UserService creatUserService(){
        return new UserServiceImpl();
    }
}

    @Test
    public void test03(){
        ApplicationContext c = new ClassPathXmlApplicationContext("beans.xml");
        UserService u = (UserService) c.getBean("userService1");
        u.add()

    }

3.通过实例工厂的方法

<bean id="factory" class="com.hetl.day01.factory.UserServiceFactory" />
    <bean id="userService2" factory-bean="factory" factory-method="creatUserService"></bean>
public class UserServiceFactory {

    public  UserService creatUserService(){
        return new UserServiceImpl();
    }
}



    @Test
    public void test03(){
        ApplicationContext c = new ClassPathXmlApplicationContext("beans.xml");
        UserService u = (UserService) c.getBean("userService2");
        u.add()

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值