Spring注入之注解

繁琐的xml配置有时候让人感到烦躁,而Spring支持的注解配置简化了bean的配置。

所以spring可以使用annotation进行主动注入以及自动检测bean。

<!--启用注解 -->

<context:annotation-config></context:annotation-config>

<!-- 自动检测pojo类为spring中的bean+启用注解 ,有了这个就可以不用配置-->

<context:component-scan base-package="com.lubby.test"></context:component-scan>

Course类

package com.lubby.test;

import org.springframework.stereotype.Component;
@Component
public class Course {
	private String courseName = "Enlish";
	private String teacherName;

	public Course() {
		super();
	}
	public Course(String courseName, String teacherName) {
		super();
		this.courseName = courseName;
		this.teacherName = teacherName;
	}
	public String getCourseName() {
		return courseName;
	}
	public void setCourseName(String courseName) {
		this.courseName = courseName;
	}
<span style="white-space:pre">	</span>public String getTeacherName() {
		return teacherName;
	}
	public void setTeacherName(String teacherName) {
		this.teacherName = teacherName;
	}
	@Override
	public String toString() {
		return "Course [courseName=" + courseName + ", teacherName=" + teacherName + "]";
	}
}

Student类

package com.lubby.test;

import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;

@Component
public class Student {
	private String name;
	private String school;
	private int age;
	@Resource(name = "course")
	private Course course;
	private String address;
	private List<String> teacherName;

	public Student() {
		super();
	}
	public Student(String name, String school, int age, Course course, String address, List<String> teacherName) {
		super();
		this.name = name;
		this.school = school;
		this.age = age;
		this.course = course;
		this.address = address;
		this.teacherName = teacherName;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getAddress() {
		return address;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSchool() {
		return school;
	}
	public void setSchool(String school) {
		this.school = school;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Course getCourse() {
		return course;
	}
	public void setCourse(Course course) {
		this.course = course;
	}
	public List<String> getTeacherName() {
		return teacherName;
	}
	public void setTeacherName(List<String> teacherName) {
		this.teacherName = teacherName;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", school=" + school + ", age=" + age + ", course=" + course + ", address="
				+ address + ", teacherName=" + teacherName + "]";
	}
}

配置文件

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	default-lazy-init="true"
	xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    ">

	<!-- 自动检测并注册为spring中的bean+启用注解 -->
	<context:component-scan base-package="com.lubby.test"></context:component-scan>

	<bean id="single" class="com.lubby.test.Single" factory-method="getInstance"
		init-method="init" destroy-method="destroy">
		<constructor-arg value="0100102"></constructor-arg>
		<constructor-arg value="I want to play games...."></constructor-arg>
	</bean>
</beans>

Test类

public class Test {

	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("com/lubby/test/test.xml");
		 Student student = (Student) ctx.getBean("student");
		 System.out.println(student);
	}
}

常用注解

@Component 表示为Spring组件

@Controller  标示为SpringMVC中的controller

@Service 标示为SpringMVC中的服务

一般用@Componen标示任意自定义注解

@Resource(name = "course")用来注入bean对象  默认是根据name去注入,如果没有指定name那么默认name是类第一个字母小写

Spring注入之注解

时间: 2024-10-12 20:42:24

Spring注入之注解的相关文章

Spring注入:配置与注解

之前在某电商公司的时候也接触过一点Spring,不过了解不深,只是大概知道这个东西的存在.现在在一家公司实习的时候,才系统的看了一下Spring,这个框架网上的解释都很多,但主要都会介绍一下关于spring注入这一点,其实spring还有拦截的功能,而spring本身又是可以通过注解来使用,也可以通过配置文件使用,比较复杂,这里粗略介绍spring的注入层面,后面也许会写一篇关于spring MVC的博客.同时本文也会附上本人在自学过程中的一些好资料~~ 注入简介 Spring注入可以理解为是对

[JAVA][Spring]Spring 3.0 注解注入详解

一.各种注解方式 [email protected]注解(不推荐使用,建议使用@Resource) @Autowired可以对成员变量.方法和构造函数进行标注,来完成自动装配的工作.@Autowired的标注位置不同,它们都会在Spring在初始化这个bean时,自动装配这个属性.要使@Autowired能够工作,还需要在配置文件中加入以下 Xml代码 <bean class="org.springframework.beans.factory.annotation.AutowiredAn

Spring依赖注入:注解注入总结

http://outofmemory.cn/code-snippet/3670/spring-inject-by-annotation 注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Component. Autowired是自动注入,自动从spring的上下文找到合适的bean来注入 Resource用来指定名称注入 Qualifier和Autowir

Spring 3.0 注解注入详解

一.各种注解方式 [email protected]注解(不推荐使用,建议使用@Resource) @Autowired可以对成员变量.方法和构造函数进行标注,来完成自动装配的工作.@Autowired的标注位置不同,它们都会在Spring在初始化这个bean时,自动装配这个属性.要使@Autowired能够工作,还需要在配置文件中加入以下 Xml代码 <bean class="org.springframework.beans.factory.annotation.AutowiredAn

Spring MVC常用注解

cp by http://www.cnblogs.com/leskang/p/5445698.html 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Control

关于Spring常用的注解

参考文献:http://www.cnblogs.com/xdp-gacl/p/3495887.html 使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/>. 如:在base-package指明一个包 1 <context:component-scan base-package=

Spring中@Autowired注解、@Resource注解的区别(转)

标签: Autowired Resource Spring(3)  Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了.@Resource有两个属性是比较重要的,分是name和type,Spring将@Reso

Spring中@Autowired注解、@Resource注解的区别

Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了.@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析

Spring中的注解 @Qualifier

在使用Spring框架中@Autowired标签时默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个.当找不到一个匹配的 Bean 时,Spring 容器将抛出 BeanCreationException 异常,并指出必须至少拥有一个匹配的 Bean. Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样歧义就消除了,可以通过下面的方法解决异常. @Qualifier("XXX")