[Spring]Day 02-使用注解配置Spring

Spring注解的基础使用

1.关键jar包

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
 </dependency>

2.applicationContext.xml引入约束

xmlns:context="http://www.springframework.org/schema/context"

http://www.springframework.org/schema/context
http://www.springframework.org/schema/beans/spring-context.xsd

3…xml

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

    <!-- 指定扫描cn.itcast.bean报下的所有类中的注解.
	 注意:扫描包时.会扫描指定报下的所有子孙包
     -->
    <context:component-scan base-package="com.eilas.bean"/>

    <bean name="car2" class="com.eilas.bean.Car">
        <property name="name" value="布加迪威龙" ></property>
        <property name="color" value="black"  ></property>
    </bean>

</beans>

4.bean类加注解

Car.java

package com.eilas.bean;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("car")
public class Car {
	@Value("玛莎拉蒂")
	private String  name;
	@Value("呕吐绿")
	private String color;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	@Override
	public String toString() {
		return "Car [name=" + name + ", color=" + color + "]";
	}
	
	
}

User.java


package com.eilas.bean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

//@Component("user")
//	@Service("user") // service层
//	@Controller("user") // web层
@Repository("user")// dao层
//<bean name="user" class="com.eilas.bean.User"/>
@Scope(scopeName = "singleton")//prototype
public class User {
    private String name;
    @Value("2")//通过反射的Field赋值,破坏了封装性
    private Integer age;

//    @Autowired//自动装配
//    //问题:如果匹配多个类型一致的对象.将无法选择具体注入哪一个对象. 这两个一起配合使用
//    @Qualifier("car2")
    @Resource(name = "car2")//手动注入,指定注入哪个名称的对象 推荐使用
    private Car car;

    public User() {
    }

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    @Value("liming")//通过set方法赋值,推荐使用.
    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Car getCar() {
        return car;
    }

    public void setCar(Car car) {
        this.car = car;
    }

    @PostConstruct //在对象被创建后调用.init-method
    public void init() {
        System.out.println("我是初始化方法");
    }
    @PreDestroy
    public void destory() {
        System.out.println("我是销毁方法");
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", car=" + car +
                '}';
    }
}

测试
myTest .java

package com.eilas.test;

import com.eilas.bean.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class myTest {
    @Test
    public void test01() {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User u = (User)context.getBean("user");
        System.out.println(u);
        ((ClassPathXmlApplicationContext) context).close();//加这个才能看到销毁方法
    }
}

总结步骤:

0.导包4+2+spring-aop
1.为主配置文件引入新的命名空间(约束)
2.开启使用注解代理配置文件
在这里插入图片描述
3.在类中使用注解完成配置

开始注解
a.将对象注册到容器
[{"src":"xap:resources/0ff36dd6e39fba700cd869f57e22c3513e7bb4a9bb9e3861b57e97d963cfbeff.png","width":200,"height":46.03580562659847}]
b.修改对象的作用范围
在这里插入图片描述
c-1.值类型注入
在这里插入图片描述
c-2.引用类型注入
在这里插入图片描述
d.初始化|销毁方法
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tinfengyee/article/details/88798024