文档章节

使用@Configuration_@Bean_@Import简化xml配置

秋风醉了
 秋风醉了
发布于 2014/10/31 16:37
字数 549
阅读 82
收藏 1

使用@Configuration_@Bean_@Import简化xml配置


首先建一个Maven项目,导入项目所需要的spring依赖如下:

<dependencies>
	<!--spring context -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>4.1.1.RELEASE</version>
	</dependency>

	<!--spring core -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
		<version>4.1.1.RELEASE</version>
	</dependency>

	<!--spring bean -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-beans</artifactId>
		<version>4.1.1.RELEASE</version>
	</dependency>

	<!--spring aop -->

	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aop</artifactId>
		<version>4.1.1.RELEASE</version>
	</dependency>

	<!--spring jdbc -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>
		<version>4.1.1.RELEASE</version>
	</dependency>

	<!-- spring tx -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-tx</artifactId>
		<version>4.1.1.RELEASE</version>
	</dependency>

	<dependency>
		<groupId>org.springframework.batch</groupId>
		<artifactId>spring-batch-core</artifactId>
		<version>3.0.2.RELEASE</version>
	</dependency>

	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.10</version>
		<scope>test</scope>
	</dependency>

	<dependency>
		<groupId>cglib</groupId>
		<artifactId>cglib</artifactId>
		<version>3.1</version>
	</dependency>
</dependencies>


新建UserService,RoleService两个类,如下:

package com.lyx;

public class UserService {
	public void addUser() {
		System.out.println("add user");
	}
}

package com.lyx;

public class RoleService {
	public void addRole() {
		System.out.println("add role");
	}
}


使用@Configuration注解

如下:

package com.lyx;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ServiceConfig {

	@Bean(name = "roleService")
	public RoleService getRoleService() {
		return new RoleService();
	}

	@Bean(name = "userService")
	public UserService getUserService() {
		return new UserService();
	}
}


使用@Import注解

如下:

package com.lyx;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import(ServiceConfig.class)
public class AppConfig2 {
	
}


运行该项目

App.java如下,使用AnnotationConfigApplicationContext类加载项目

package com.lyx;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App {

	public static void main(String argss[]) {
		@SuppressWarnings("resource")
		ApplicationContext context = new AnnotationConfigApplicationContext(
				AppConfig2.class);
		RoleService roleService = (RoleService) context.getBean("roleService");
		roleService.addRole();

		UserService userService = (UserService) context.getBean("userService");
		userService.addUser();
	}

}

运行结果:

add role

add user


使用XML的方式配置上面的例子

spring-service.xml配置service,如下:

<?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:context="http://www.springframework.org/schema/context"
	xmlns:cache="http://www.springframework.org/schema/cache"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

	<bean id="roleService" class="com.lyx.RoleService"></bean>
	<bean id="userService" class="com.lyx.UserService"></bean>
</beans>

applicationContext.xml配置app,如下:

<?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:context="http://www.springframework.org/schema/context"
	xmlns:cache="http://www.springframework.org/schema/cache"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

	<import resource="spring-service.xml" />
</beans>

App2.java如下

package com.lyx;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App2 {
	public static void main(String args[]) {
		@SuppressWarnings("resource")
		ApplicationContext context = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		RoleService roleService = (RoleService) context.getBean("roleService");
		roleService.addRole();
		UserService userService = (UserService) context.getBean("userService");
		userService.addUser();

	}
}


====END====


© 著作权归作者所有

秋风醉了
粉丝 252
博文 532
码字总数 405694
作品 0
朝阳
程序员
私信 提问
spring的三种主要的装配机制

本文中使用一个接口类UserInterface以及接口的实现类UserInterfaceImpl,调用接口UserInterface的UserCall类来做示例。 在下面,我们即将为UserCall注入一个UserInterface的实现类,一个字符...

idaren
2016/06/18
216
0
好程序员分享SpringBoot须掌握的注解

前言 Spring经历了如下几个阶段: 第一阶段:xml配置 在Spring 1.x时代,使用Spring开发满眼都是xml配置的Bean,随着项目的扩大,我们需要把xml配置文件放到不同的配置文件里,那时需要频繁的...

好程序员IT
06/04
16
0
spring @Enable 模块驱动

@Enable... 基于spring 3.1 @Enable...系列可以实现按需加载整个模块,从而达到简化配置的目的。我们以为例子 所以魔法就在 @Import这里,@Import可以导入Configuration class, ImportSelect...

OrangeJoke
06/01
25
0
spring里面的 @Import @Configuration和@Bean的用法和理解以及区别

1.@Import @Import注解在4.2之前只支持导入配置类 在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean 演示java类 演示配置 运行 输出结果 everything is all fine 2. @Bean: ①注...

weiliu007
2016/12/03
963
0
7.12 Java-based container configuration (基于java的容器配置)

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-java-instantiating-container-web 7.12 Java-based container configuration (基于java的容器配......

流光韶逝
2016/09/28
33
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之访问者模式

定义 Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which......

陈年之后是青葱
昨天
11
0
PhotoShop 高级应用 : 分层云彩 - 简单闪电效果

1.创建黑白渐水平渐变图层 2.选择滤镜选项卡: 渲染--->分层云彩功能 3.将滤镜-云彩效果渲染后的图层进行反相操作 【此时出现闪电效果】 6.调整色阶,使得闪电效果更明显 7.创建剪贴蒙版:色...

东方墨天
昨天
12
0
三种实现Android主界面Tab的方式

三种实现Android主界面Tab的方式 https://www.cnblogs.com/caobotao/p/5103673.html

shzwork
昨天
13
0
java8-Optional类

背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛。 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计。 一个例子 业务模型 Person 有车一族, 有Car...

春天springcarter
昨天
13
0
py 登录github时token以及cookie的应用

import requestsfrom bs4 import BeautifulSoup## 获取tokenr1 = requests.get('https://github.com/login')s1 = BeautifulSoup(r1.text,'html.parser')token = s1.find(name='input',......

子枫Eric
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部