当前位置: 首页 > 知识库问答 >
问题:

用Spring Bean连接数据库对象

焦阎宝
2023-03-14

从动作书中的Spring,有一个Spring豆的例子。它使用光盘类比。当应用程序需要“The Beatles”专辑时,它会创建“The Beatles”专辑bean以及其他专辑。

  1. 如果数据库中有n相册,那么我是否应该创建n相册bean?
  2. 如果不是,n相册在应用程序中是如何表示的?它只是一个POJO域模型(而不是bean)吗?
  3. 使用Spring Bean的真正用例是什么?

共有1个答案

熊博远
2023-03-14

如果我是你,我就不会把光盘比作Spring的豆子,特别是关于你后面的问题。很明显,任何Java对象都可以在Spring中声明为bean,无论您使用的是XML配置还是Java配置。

假设我有这两个类:

public class Foo {

    private String s;

    private Bar bar;

    // getters & setters

}

public class Bar {

    private int i;

    // getter & setter

}

我可以通过在XML配置文件中声明前者来使其成为Spring Bean:

<bean id="foo" class="demo.Foo">
    <property name="s" value="Hello, World!" />
    <property name="bar">
        <bean class="demo.Bar">
            <property name="i" value="10" />
        </bean>
    </property>
</bean>
ApplicationContext ctx = new ClassPathXmlApplicationContext("app.xml");
Foo foo = ctx.getBean(Foo.class);

总之,以这个简短的示例结束,下面的代码行将打印10:

System.out.println(foo.getBar().getI());

在本例中,我使用了Foo和Bar,但它也可以是一个Web服务、一个实现某些业务逻辑的服务、一个数据库、ORM门面、一个模板引擎、一个线程池,任何...但主要是处理数据对象的组件,而不是数据对象本身,尽管这是完全可能的。

现在返回您的用例,在Spring应用程序中,如果我正在编写一个带有数据库的Web应用程序,我通常会有这些组件:一个控制器(Web边界)、一个服务(用于业务逻辑)、一个存储库(用于查询),当然还有一个数据源。在这里我不会深入研究太多细节(例如,没有声明性事务)。请注意,使用此配置,没有特定的数据提供程序被编译到我的Java代码中,它仍然保留在配置中:

<bean id="cdController" class="demo.compactdisc.CdController">
    <property name="cdService" ref="cdService" />
</bean>

<bean id="cdService" class="demo.compactdisc.CdServiceImpl">
    <property name="cdRepository" ref="cdRepository" />
</bean>

<bean id="cdRepository" class="demo.compactdisc.CdRepositoryImpl">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    <property name="username" value="test"/>
    <property name="password" value="s3cr3t"/>
</bean>

对于您的域,存储库将光盘从数据库返回到服务,服务返回到控制器,控制器返回到用户。光盘不会被描述为Spring bean,但肯定是实际Spring bean的参数和返回值。

 类似资料:
  • 连接数据库 在能够对MongDB进行操作之前,需要使用BuguFramework创建一个数据库连接,代码如下: BuguConnection conn = BuguFramework.getInstance().createConnection(); conn.connect("192.168.0.100", 27017, "mydb", "username", "password"); 也可以

  • 一、全局配置定义 return array( 'DB_TYPE' => 'mysql', 'DB_HOST' => '127.0.0.1', 'DB_NAME' => 'thinkcmf', 'DB_USER' => 'root', 'DB_PWD' => 'root', 'DB_PORT' => '3306', 'DB_PREFIX' =>

  • ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。数据库抽象访问层基于PDO方式,目前内置包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。 如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式。 配置文件

  • 本文向大家介绍java连接mysql数据库 java连接sql server数据库,包括了java连接mysql数据库 java连接sql server数据库的使用技巧和注意事项,需要的朋友参考一下 在java的应用中,我们经常会对数据库进行必要的操作,下来我们就了解一下如何用java连接mysql数据库 以及java连接sql server数据库 一、mysql 二、sql server 以上就

  • 问题内容: 我正在运行一个使用c3p0作为连接池的Spring / Hibernate连接到MySQL安装程序。出于某些奇怪的原因,当系统处于负载状态时(当然),它用尽了连接。 该网站相当稳定,直到我们开始达到新的流量水平(并发用户超过100个)。届时,DB将会崩溃(与CPU挂钩)。我的第一个动作是在应用程序中通过广泛的缓存和查询优化等来提高性能。 现在,它会间歇性地耗尽连接。似乎甚至都不依赖于负

  • 我正在尝试一个程序来检查与oracle数据库的连接,如下所示 但在eclipse中运行之后,它显示了以下异常。 JAVAsql。SQLException:Listener拒绝了连接,出现以下错误:ORA-12505,TNS:Listener当前不知道连接描述符中给出的SID 请帮助我,我是oracle数据库的新手。