• spring创建bean的三种方式


    几乎每个后端程序员在实际工作中或学习中都会用到spring,spring为我们创建了对象,摒弃了直接在代码中new一个对象的方法,其最大的特点就是:解耦合,可以说解耦合也是spring的一大特点。下面我们介绍spring创建bean的三种形式:

    其中创建项目及新建类的过程省略,只保留主要文件。

    第一种:通过构造函数来创建对象

    首先新建一个person类,很简单的一个person类,只有set和get方法

    1. package org.example;
    2. public class Person {
    3. private String name;
    4. private String age;
    5. public String getName() {
    6. return name;
    7. }
    8. public void setName(String name) {
    9. this.name = name;
    10. }
    11. @Override
    12. public String toString() {
    13. return "Person{" +
    14. "name='" + name + '\'' +
    15. ", age='" + age + '\'' +
    16. '}';
    17. }
    18. public String getAge() {
    19. return age;
    20. }
    21. public void setAge(String age) {
    22. this.age = age;
    23. }
    24. }

    然后新建applicationContext.xml文档

    <bean id = "person" class="org.example.Person">

    最后再新建一个test类,可以用自带的

    1. @Test
    2. public void test2(){
    3. ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
    4. //1
    5. Person person = (Person)ctx.getBean("person");
    6. //2
    7. Person person1 = ctx.getBean("person",Person.class);
    8. //3
    9. Person person2 = ctx.getBean(Person.class);
    10. System.out.println(person);
    11. System.out.println(person1);
    12. System.out.println(person2);
    13. }

    其中1,2,3分别代表三种获取bean对象的形式,执行该test类,这是第一种方法。

    第二种方式:通过实例工厂

    首先创建一个类ConnectionFactory。

    1. package factoryBean;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. import java.sql.SQLException;
    5. public class ConnectionFactory {
    6. public Connection getConnection(){
    7. Connection connection = null;
    8. try {
    9. Class.forName("com.mysql.jdbc.Driver");
    10. connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_nacos?useSSL=false","root","123456");
    11. } catch (ClassNotFoundException e) {
    12. e.printStackTrace();
    13. } catch (SQLException e) {
    14. e.printStackTrace();
    15. }
    16. return connection;
    17. }
    18. }

    然后applicationContext.xml中添加如下内容

    1. <bean name="connectionFactory" class="factoryBean.ConnectionFactory"/>
    2. <bean name="conn" factory-bean="connectionFactory" factory-method="getConnection"/>

    然后再编写测试类

    1. @Test
    2. public void test3(){
    3. ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
    4. Connection conn = (Connection) ctx.getBean("conn");
    5. System.out.println(conn);
    6. }

    直接运行结果即可,这是第二种创建实例工厂

    第三种:创建静态工厂

    首先创建类StaticConnectionFactory

    1. package factoryBean;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. import java.sql.SQLException;
    5. public class StaticConnectionFactory {
    6. public static Connection getConnection(){
    7. Connection connection = null;
    8. try {
    9. Class.forName("com.mysql.jdbc.Driver");
    10. connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_nacos","root","123456");
    11. } catch (ClassNotFoundException e) {
    12. e.printStackTrace();
    13. } catch (SQLException e) {
    14. e.printStackTrace();
    15. } finally {
    16. }
    17. return connection;
    18. }
    19. }

    然后applicationContext.xml文件中添加如下内容

    1. <bean id="connection" class="factoryBean.StaticConnectionFactory" factory-method="getConnection">bean>

    然后编写测试类

    1. @Test
    2. public void test4(){
    3. ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
    4. Connection connection = (Connection) ctx.getBean("connection");
    5. System.out.println(connection);
    6. }

    运行即可。

    以上就是spring创建bean的三种方式,供大家参考

  • 相关阅读:
    Zookeeper集群 + Kafka集群
    【渗透测试】Strusts2系列漏洞
    MVCC 脏读理解
    神经网络层次分析模型,神经网络层次分析方法
    linux挂载数据盘后格式化添加挂点
    【历史上的今天】12 月 1 日:新浪网成立;钉钉上线;古登堡计划发布
    搜狗百科词条创建报价为何跨度这么大?
    C#/.NET/.NET Core优秀项目和框架精选(2023年10月更新,项目分类已整理完成欢迎大家踊跃提交PR一起完善让优秀的项目和框架不被埋没)
    如何将Python程序打包并保护源代码
    Linux设置静态IP地址
  • 原文地址:https://blog.csdn.net/qq_24972061/article/details/128139060