配置弹簧项目

sal*_*oni 1 spring

我的问题是:从基本版本开始,Spring中需要哪些必需的jar,我们如何配置Spring项目?

Art*_*ald 5

转到Spring 主页并下载Spring(这里,我使用的是2.5.x版本)

安装完成后,将以下jar放入类路径中

<SPRING_HOME> /dist/spring.jar

这是一个单一的豆子

package br.com.introducing.Hello;

public class Hello {

    private String message;

    // getter's and setter's

}
Run Code Online (Sandbox Code Playgroud)

...

编写一个xml来配置bean,如下所示

// app.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-2.5.xsd">
    <bean id="hello" class="br.com.introducing.Hello">
        <property name="message" value="What do you want ?"/>
    </bean>
</beans>
Run Code Online (Sandbox Code Playgroud)

将app.xml放在根类路径中

而你的psvm

public static void main(String [] args) {
    ApplicationContext appContext = new ClassPathXmlApplicationContext("app.xml");

    Hello hello = (Hello) appContext.getBean("hello");

    hello.getMessage(); // outputs What do you want ?
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

applicationContext.xml的作用是什么

使用getBean方法时,它的行为类似于Factory模式.就像是

public class ApplicationContext {

    Map wiredBeans = new HashMap();

    public static Object getBean(String beanName) {
        return wiredBeans.get(beanName);
    }

}
Run Code Online (Sandbox Code Playgroud)

正如Spring in Action中所说的那样

它是一个通用的工厂,创造和调整许多类型的豆.

但是,还有更多

  • 允许您加载文件
  • 您可以发布活动
  • 它支持i18n(i18n代表国际化)

假设这里是messages.properties(类路径的根)

// messages.properties

messsageCode=What do you want ?
Run Code Online (Sandbox Code Playgroud)

要启用i18n,您必须定义一个名为messageSource的bean 以获取我们的资源,如下所示

<?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-2.5.xsd">
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="messages"/>
    </bean>
</beans>
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用它

appContext.getMessage("messsageCode", null, null); // outputs What do you want ?
Run Code Online (Sandbox Code Playgroud)

通常,我们不需要在xml文件中定义所有bean.您可以使用注释(启用组件扫描所需的其他设置)而不是xml,类似于

package br.com.introducing.Hello;

@Component
public class Hello {

    private String message;

    // getter's and setter's

}
Run Code Online (Sandbox Code Playgroud)

组件注释说:

Spring,我是一个通用bean,可以通过应用程序上下文检索

关于Spring的一个很好的资源是Spring in Action书或Spring文档

建议:仔细阅读