Spring @Configuration用annotation装配spring
来源:互联网 发布:二叉树遍历递归算法 编辑:程序博客网 时间:2024/06/05 11:09
1. @Configuration示例
Spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置。
一、首先,需要xml中进行少量的配置来启动Java配置:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
- <context:component-scan base-package="SpringStudy.Model">
- </context:component-scan>
- </beans>
二、定义一个配置类
用@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean。
代码如下:
- package SpringStudy;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import SpringStudy.Model.Counter;
- import SpringStudy.Model.Piano;
- @Configuration
- public class SpringConfig {
- @Bean
- public Piano piano(){
- return new Piano();
- }
- @Bean(name = "counter")
- public Counter counter(){
- return new Counter(12,"Shake it Off",piano());
- }
- }
Counter:
- package SpringStudy.Model;
- public class Counter {
- public Counter() {
- }
- public Counter(double multiplier, String song,Instrument instrument) {
- this.multiplier = multiplier;
- this.song = song;
- this.instrument=instrument;
- }
- private double multiplier;
- private String song;
- @Resource
- private Instrument instrument;
- public double getMultiplier() {
- return multiplier;
- }
- public void setMultiplier(double multiplier) {
- this.multiplier = multiplier;
- }
- public String getSong() {
- return song;
- }
- public void setSong(String song) {
- this.song = song;
- }
- public Instrument getInstrument() {
- return instrument;
- }
- public void setInstrument(Instrument instrument) {
- this.instrument = instrument;
- }
- }
Piano类
- package SpringStudy.Model;
- public class Piano {
- private String name="Piano";
- private String sound;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getSound() {
- return sound;
- }
- public void setSound(String sound) {
- this.sound = sound;
- }
- }
四、调用测试类
- package webMyBatis;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.annotation.AnnotationConfigApplicationContext;
- import SpringStudy.Model.Counter;
- public class SpringTest {
- public static void main(String[] args) {
- //ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/bean.xml");// 读取bean.xml中的内容
- ApplicationContext annotationContext = new AnnotationConfigApplicationContext("SpringStudy");
- Counter c = annotationContext.getBean("counter", Counter.class);// 创建bean的引用对象
- System.out.println(c.getMultiplier());
- System.out.println(c.isEquals());
- System.out.println(c.getSong());
- System.out.println(c.getInstrument().getName());
- }
- }
注意:如果是在xml中配置beans和bean的话,或者使用自动扫描调用的话,代码为
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/bean.xml");// 读取bean.xml中的内容Counter c = ctx.getBean("counter", Counter.class);// 创建bean的引用对象
2.@Configuration使用
@Configuration@ImportResource("classpath:applicationContext.xml")public class WebConfig {
}
<!-- 配置spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 指定spring相关配置文件的位置 --><context-param><param-name>contextConfigLocation</param-name><param-value>com.stepwell.configure.WebConfig</param-value></context-param>
4,注解配置spring mvc@Configuration@Import(WebSocketConfig.class)public class WebConfig {@AutowiredWebSocketConfig webSocketConfig;
}
@Configuration@EnableWebMvcpublic class WebConfig {}
@Configurationpublic class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); }}
<beans> <bean id="myService" class="com.acme.services.MyServiceImpl"/></beans>
@Configuration@ComponentScan(basePackages = "com.acme")public class AppConfig { ...}
<beans> <context:component-scan base-package="com.acme"/></beans>
- Spring @Configuration用annotation装配spring
- Spring @Configuration用annotation装配spring
- Spring @Configuration用annotation装配spring
- Spring @Configuration用annotation装配spring
- Spring @Configuration用annotation装配spring
- spring annotation 之 自动装配
- Annotation based configuration in Spring
- Spring 基于 annotation 的自动装配
- 模仿 spring IOC Annotation版自动装配
- Spring Java Configuration——用java代码来装配Spring
- spring 装配
- spring装配
- Spring装配
- Spring基于Annotation为dao装配sessionFactory的问题
- (3)Spring study 3 ------- Bean装配 annotation (待续....)
- Spring-Bean之基于注解(Annotation)装配解析
- spring boot Configuration Annotation Proessor not found in classpath
- spring boot Configuration Annotation Proessor not found in classpath
- 结构体类型-枚举类型-联合体类型
- HDU1241 Oil Deposits(dfs)
- react系列(1)简单介绍及应用
- java实现从数据库读取数据写入excel,写入多个sheet,6万数据耗时100秒附近
- C++中的inline用法
- Spring @Configuration用annotation装配spring
- PHP获得本周、本月、上周、上月起始时间戳
- 23种设计模式全解析
- <学习html>第八天笔记-HTML5文档类型和字符集、HTML5新标签与特性(常用新标签、新增input type属性值、常用新属性、多媒体标签)
- jmeter应用---测试元件介绍(三)
- 用go的goroutine和channel实现一个简单的“生产、消费”(带有超时控制)小例子
- Java程序员们最常犯的10个错误
- ceph (luminous 版) journal disk 故障测试
- 正则表达式常用对象方法整理