Spring基于java注解配置


Spring框架是控制反转 (IOC) 或依赖性注入 (DI) 模式的推动因素,而这种推动是通过基于容器的配置实现的。过去,
Spring 允许开发人员使用基于 XML 的配置,通过利用应用程序上下文 XML 文件来管理 bean 依赖性。此文件处于应用程序的外部,包含 bean 及其与该应用程序的依赖项的定义。尽管使用 XML 配置较为简单和便捷,但仍有另外一种方法可定义bean 及其依赖项。这种方法也称为基于 Java 的配置。不同于 XML,基于 Java 的配置能够以编程方式管理bean。这可通过运用多种注释来实现。

----------------------------------------------

 基于java注解配置:


带有 @ Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。
@ Bean 注解告诉 Spring,一个带有 @ Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean
@ Value:用于修饰一个 Field,用于为该 Field配置一个值,相当于配置一个变量。
@ Import:修饰一个 Java配置类,用于向当前 Java配置类中导入其他 Java配置类
@ Scope:用于修饰一个方法,指定该方法对应的 Bean的生命域
@ Lazy:用于修饰一个方法,指定该方法对应的 Bean是否需要延迟初始化
@ DependsOn:用于修饰一个方法,指定在初始化该方法对应的 Bean之前初始化指定的 Bean
@ ImportResource注:用于修饰 Java配置类,用于导入指定的 XML配置文件

--------------------------------------------

具体代码如下
java配置类

@Configuration
public class AppConfig {
// 相当于定义一个名为personName的变量,其值为"泰山"
@Value("泰山") String personName;
@Bean(name="chinese")
public Person person()
{
Chinese p=new Chinese();
p.setName(personName);
p.setAxe(steelAxe());
return p;
}
// 配置Bean:stoneAxe
@Bean(name="stoneAxe")
public Axe stoneAxe(){
return new StoneAxe();

}
// 配置Bean:steelAxe
@Bean(name="steelAxe")
public Axe steelAxe()
{
return new SteelAxe();
}
}

service层:

package com.cn.service;

public interface Axe {
   public String chop();
}

package com.cn.service;

public interface Person {
public void useAxe();
}


service.imp

package com.cn.service.imp;


import com.cn.service.Axe;
import com.cn.service.Person;

public class America implements Person {
private Axe axe;
private String name;

public Axe getAxe() {
return axe;
}

public void setAxe(Axe axe) {
this.axe = axe;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public void useAxe() {
System.out.println("我是木星人:名字为:" + name + "。正在用斧头" + axe.chop());
}
}

package com.cn.service.imp;


import com.cn.service.Axe;


public class SteelAxe implements Axe {

@Override
public String chop() {
// TODO Auto-generated method stub
return "刚斧头砍树真快";
}
}

测试类

package com.cn.text;


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

import com.cn.service.Person;

public class BeanText {
 public static void main(String[] args) {
ApplicationContext acContext=new ClassPathXmlApplicationContext("bean.xml");
Person person=acContext.getBean("chinese",Person.class);
person.useAxe();
Person person2=acContext.getBean("america",Person.class);
person2.useAxe();
}
}

bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean id="stoneAxe" class="com.cn.service.imp.StoneAxe" />
<bean id="steelAxe" class="com.cn.service.imp.SteelAxe" />
<!-- 此处是与bean继承结合简化代码 -->
<bean id="pt" abstract="true" class="com.cn.service.imp.Chinese">
<property name="name" value="泰山"></property>
<property name="axe" ref="steelAxe"></property>
</bean>
 
<bean id="chinese" parent="pt" />
<bean id="america" class="com.cn.service.imp.America" parent="pt">
<property name="axe" ref="stoneAxe"></property>
</bean>
</beans>
基于 java 注解配置

基于 java 注解配置


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值