Spring注解开发(基于注解)

88 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

使用组件扫描,首先需要在xml配置中指定扫描父级package路径<context:component-scan base-1package=“com.aimuti”/>,容器会自动扫描com.aimuti包以及其子包下所有组件,并实例化bean.
指定扫描路径后,并不是该路径下所有组件类都会扫描到容器中,只有在组件类中加入以下注解标记时,才会被扫描到容器中.
在这里插入图片描述
细节就不仔细说了,写代码比较与配置开发有什么区别.

applicationContext4.xml

<!-- 开启注解扫描 -->
	<context:component-scan base-package="com.aimuti"/>
	<!-- 声明properties集合,读取const.properties文件内容 -->
	<util:properties id="const" location="classpath:const.properties"/>

const.properties
#max rows in one page
PAGE_SIZE=10
@Component("example")
@Scope("singleton")
public class ExampleBean {
/*
 * 使用注解开发:1.开启注解扫描
 * 2.在bean上加注解
 */
	public ExampleBean() {
		System.out.println("实例化ExampleBean:"+this);
	}
	
	@PostConstruct
	public void init() {
		System.out.println("初始化ExampleBean");
	}

	@PreDestroy
	public void destory() {
		System.out.println("销毁ExampleBean");
	}

	public void execute() {
		System.out.println("执行execute方法");
	}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@Component
public class Programmer implements Serializable{
	private Computer computer;
	@Autowired
	public Programmer(@Qualifier("computer") Computer computer) {
		this.computer = computer;
	}
	public void setComputer(Computer computer) {
		this.computer = computer;
	}
	public Computer getComputer() {
		return computer;
	}
}

@Component("computer")
public class Computer implements Serializable{
	@Value(value="1")
	private String CPU;
	@Value(value="2")
	private String RAM;
	@Value(value="3")
	private String HDD;
	set get方法...

在这里插入图片描述

@Component
public class Teacher implements Serializable{
	private Computer computer;
	
	@Autowired
	public void setComputer(@Qualifier("computer") Computer computer) {
		this.computer = computer;
	}
	
	public Computer getComputer() {
		return computer;
	}
}

在这里插入图片描述

@Component
public class Student {
	@Qualifier("computer")
	private Computer computer;
	
	@Autowired
	public void setComputer(Computer computer) {
		this.computer = computer;
	}
	
	public Computer getComputer() {
		return computer;
	}
}

在这里插入图片描述

@Component
public class Manager implements Serializable{
	private Computer computer;
	@Resource(name="computer")//注入单例对象时,可以省略
	public void setComputer(Computer computer) {
		this.computer = computer;
	}
	public Computer getComputer() {
		return computer;
	}
}

在这里插入图片描述

@Component
public class Salesman {
	@Resource // 注解的属性注入 (最为常用)
	private Computer computer;
	
	public void setComputer(Computer computer) {
		this.computer = computer;
	}
	
	public Computer getComputer() {
		return computer;
	}
}

在这里插入图片描述

@Component
public class DemoBean {
	@Value("zhangsan")
	private String name;
	@Value("PHP")
	private String lang;
	@Value("60")
	private String score;
	@Value("#{const.PAGE_SIZE}")
	private int pagesize;

	public void execute(){
		System.out.println("name:"+name);
		System.out.println("lang:"+lang);
		System.out.println("score:"+score);
		System.out.println("pagesize:"+pagesize);
	}
	省略set get方法

在这里插入图片描述

基于配置的开发