spring对bean的管理内容

(创建, 生命周期, 属性注入)
一、Spring的Bean管理(XML)方式

二、Spring的Bean管理(注解)方式

三、Spring容器中Bean的生命周期

四、XML与注解方式的混合使用

一、Spring的Bean管理(XML)方式
有三种方式:使用类的构造器方式(默认为无参)

                           使用静态工厂方法实例化(简单工厂模式)

                           使用实例工厂方法实例化(工厂方法模式)

①:使用类的构造器方式

    首先创建一个Bean1类
public class Bean1 {
    public Bean1(){
        System.out.println("Bean1被实例化!");
    }
}
    在配置文件中添加该类
<?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="bean1" class="com.xyz.ioc.demo02.Bean1">
 
    </bean>
</beans>
    测试:运行下面代码就会看到控制台输出“Bean1被实例化!”,表明调用了Bean1的构造方法。
public class test {
   @Test
    private void demo1(){
        //创建工厂
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext
                ("applicationContext.xml");
        Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");
 
    }
}

②: 使用静态工厂方法实例化(简单工厂模式)

      首先创建Bean2对象类
public class Bean2 {
    
}
          为Bean2提供一个静态工厂

public class Bean2Factory {
    public static Bean2 createBean2(){
        System.out.println("执行了BeanFactory方法");
        return new Bean2();
    }
}
    在配置文件中添加



    测试
  @Test
    public void demo02(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext
                            ("applicationContext.xml");
        Bean2 bean2 = (Bean2) applicationContext.getBean("bean2");
    }
   ⑤ :使用实例工厂方法实例化(工厂方法模式)

      首先创建Bean3对象类
public class Bean3 {
    
}
          为Bean2提供一个实例工厂

public class Bean3Factory {
    public Bean3 createBean3(){
        System.out.println("Bean3的工厂被执行了");
        return new Bean3();
    }
}
    在配置文件中添加
测试
  @Test
    public void demo03(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext
                ("applicationContext.xml");
        Bean3 bean3 = (Bean3) applicationContext.getBean("bean3");
    }

总结:静态工厂和实例工厂最大的区别就是创建实例的方法是否式静态的
由于实例工厂的创建实例方法不是静态的,所以在配置文件中先要获取工厂的实例才能去创建对象

二、Spring的Bean管理(注解)方式
1.注解方式创建Bean

首先要修改配置文件,相对于上面XML方式,注解方式需要在配置文件导入注解的约束

      使用<context/>标签用于扫描制定的包
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启注解扫描指定的包-->
    <context:component-scan base-package="com.xyz.bean"/>
</beans>
 创建一个UserService类(在类上使用@Component注解,括号里的"userService"相当于XML中<Bean/>的id)

@Component("userService")
public class UserService {
    public void sayHello(String name){
        System.out.println("Hello"+name);
    }
}

测试

   @Test
    public void demo(){
        ApplicationContext applicationContext = new 
    ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) applicationContext.getBean("userService");
        userService.sayHello("张三");
    }

可以发现注解方式比XML方式简便很多,Spring除了@Component外,还提供了3个功能基本和@Component等效的注解

@Repository 用于对DAO实现类进行标注

@Service 用于对Service实现类进行标注

@Controller 用于对Controller实现类进行标注

2.其他注解

@PostConstruct:在初始化前会调用该注解标记的方法

@PreDestory:在销毁前会调用该注解标记的方法

@Scope:用于指定Bean的作用范围

三、Spring容器中Bean的生命周期

四、XML与注解方式的混合使用
XML优势:结构清晰、易于阅读

注解优势:开发便捷、属性注入方便

由于XML和注解各有各的优势,所以一般开发中使用XML方式管理类、注解方式进行属性注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值