20
2020
03

如何用基于Java配置的方式配置Spring?

Spring对Java配置的支持是由@Configuration注解和@Bean注解来实现的。由@Bean注解的方法将会实例化、配置和初始化一个新对象,这个对象将由Spring的IoC容器来管理。@Bean声明所起到的作用与 元素类似。被@Configuration所注解的类则表示这个类的主要目的是作为bean定义的资源。被@Configuration声明的类可以通过在同一个类的内部调用@bean方法来设置嵌入bean的依赖关系。 

最简单的@Configuration 声明类请参考下面的代码: 

@Configuration 

public class AppConfig 

@Bean 

public MyService myService() { 

return new MyServiceImpl(); 

对于上面的@Beans配置文件相同的XML配置文件如下: 




上述配置方式的实例化方式如下:利用AnnotationConfigApplicationContext 类进行实例化 

public static void main(String[] args) { 

ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); 

MyService myService = ctx.getBean(MyService.class); 

myService.doStuff(); 

要使用组件组建扫描,仅需用@Configuration进行注解即可: 

@Configuration 

@ComponentScan(basePackages = “com.howtodoinjava”) 

public class AppConfig { 

… 

在上面的例子中,com.acme包首先会被扫到,然后再容器内查找被@Component 声明的类,找到后将这些类按照Sring bean定义进行注册。 

如果你要在你的web应用开发中选用上述的配置的方式的话,需要用AnnotationConfigWebApplicationContext 类来读取配置文件,可以用来配置Spring的Servlet监听器ContrextLoaderListener或者Spring MVC的DispatcherServlet。 




contextClass 


org.springframework.web.context.support.AnnotationConfigWebApplicationContext 


<!-- Configuration locations must consist of one or more comma- or space-delimited

    fully-qualified @Configuration classes. Fully-qualified packages may also be

    specified for component-scanning -->

<context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>com.howtodoinjava.AppConfig</param-value>

</context-param>


<!-- Bootstrap the root application context as usual using ContextLoaderListener -->

<listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>


<!-- Declare a Spring MVC DispatcherServlet as usual -->

<servlet>

    <servlet-name>dispatcher</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <!-- Configure DispatcherServlet to use AnnotationConfigWebApplicationContext

        instead of the default XmlWebApplicationContext -->

    <init-param>

        <param-name>contextClass</param-name>

        <param-value>

            org.springframework.web.context.support.AnnotationConfigWebApplicationContext

        </param-value>

    </init-param>

    <!-- Again, config locations must consist of one or more comma- or space-delimited

        and fully-qualified @Configuration classes -->

    <init-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>com.howtodoinjava.web.MvcConfig</param-value>

    </init-param>

</servlet>


<!-- map all requests for /app/* to the dispatcher servlet -->

<servlet-mapping>

    <servlet-name>dispatcher</servlet-name>

    <url-pattern>/app/*</url-pattern>

</servlet-mapping>


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。