关灯
开启左侧

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

[复制链接]
意大利炮 发表于 2018-12-19 11:40:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
Spring对Java配置的支持是由@Configuration注解和@Bean注解来实现的。由@Bean注解的方法将会实例化、配置和初始化一个新对象,这个对象将由Spring的IoC容器来管理。@Bean声明所起到的作用与<bean/> 元素类似。被@Configuration所注解的类则表示这个类的主要目的是作为bean定义的资源。被@Configuration声明的类可以通过在同一个类的内部调用@bean方法来设置嵌入bean的依赖关系。
最简单的@Configuration 声明类请参考下面的代码: [java] view plain copy @Configuration     public class AppConfig{         @Bean         public MyService myService() {             return new MyServiceImpl();         }     }    对于上面的@Beans配置文件相同的XML配置文件如下:
[html] view plain copy <beans>         <bean id="myService" class="com.somnus.services.MyServiceImpl"/>     </beans>    上述配置方式的实例化方式如下:利用AnnotationConfigApplicationContext 类进行实例化
[java] view plain copy public static void main(String[] args) {         ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);         MyService myService = ctx.getBean(MyService.class);         myService.doStuff();     }   要使用组件组建扫描,仅需用@Configuration进行注解即可:
[java] view plain copy @Configuration     @ComponentScan(basePackages = "com.somnus")     public class AppConfig  {         ...     }   

在上面的例子中,com.acme包首先会被扫到,然后再容器内查找被@Component 声明的类,找到后将这些类按照Sring bean定义进行注册。
如果你要在你的web应用开发中选用上述的配置的方式的话,需要用AnnotationConfigWebApplicationContext 类来读取配置文件,可以用来配置Spring的Servlet**ContextLoaderListener或者Spring MVC的DispatcherServlet。 [html] view plain copy <web-app>         <!-- Configure ContextLoaderListener to use AnnotationConfigWebApplicationContext             instead of the default XmlWebApplicationContext -->         <context-param>             <param-name>contextClass</param-name>             <param-value>                 org.springframework.web.context.support.AnnotationConfigWebApplicationContext             </param-value>         </context-param>               <!-- 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>     </web-app     

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

    注册账号后积极发帖的会员

0关注

2粉丝

139帖子

排行榜
关闭

站长推荐上一条 /1 下一条

官方微信

全国服务热线:

400-0708-360

公司地址:国家西部信息安全产业基地(成都市高新区云华路333号)

邮编:610000    Email:2908503813@qq.com

Copyright   ©2015-2016  EOIT论坛Powered by©Discuz!    ( 蜀ICP备11000634号-7 )