spring再学习之注解

1、使用注解配置spring

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns
="http://www.springframework.org/schema/beans"
xmlns:p
="http://www.springframework.org/schema/p"
xmlns:context
="http://www.springframework.org/schema/context"
xmlns:tx
="http://www.springframework.org/schema/tx"
xsi:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd "
> <!-- 指定扫描cn.itcast.bean及其子孙包 --> <context:component-scan base-package="cn.itcast"></context:component-scan> </beans>
component:组件
2、在类中使用注解
/**
 * 
 * @author zws
 *@Component("user")
 *含义就是下面
 *<bean name="user" class="cn.itcast.bean.User"  />
 */
/*
 * 
 * @Service("user") // service层
 *  @Controller("user") // web层
 *    @Repository("user")// dao层
 */
 @Repository("user")// dao层
//指定对象的作用范围,单例多例
//@Scope(scopeName="singleton")
public class User {
    private String name;
    @Value("18")
    //通过反射的Field赋值,破坏了对象的封装性
    private Integer age;
    /*
    @Autowired //对象,自动装配----对应另一个@Component("car")
    问题:如果匹配多个类型一致的对象.将无法选择具体注入哪一个对象.
    此时要配合@Qualifier使用
    @Qualifier("car2")//使用@Qualifier注解告诉spring容器自动装配哪个名称的对象
    */
    @Resource(name="car2")//手动注入,指定注入哪个名称的对象
    private Car car;
    
    public Car getCar() {
        return car;
    }
    public void setCar(Car car) {
        this.car = car;
    }
    public String getName() {
        return name;
    }
    @Value("tom")
    //set方法, 将name注入
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @PostConstruct //在对象被创建后调用.init-method
    public void init(){
        System.out.println("我是初始化方法!");
    }
    @PreDestroy //在销毁之前调用.destory-method
    public void destory(){
        System.out.println("我是销毁方法!");
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + ", car=" + car + "]";
    }
    
}

2、与junit整合测试

包,四个核心包+日志包+aop+test

/**
 * @RunWith :帮我们创建容器
 * @ContextConfiguration :指定创建容器时使用哪个配置文件
 * @author zws
 *
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:cn/itcast/e_annotationaop/applicationContext.xml")
public class Demo {
    
    @Resource(name="userServiceTarget")  
    private UserService us;
    
    @Test
    public void fun1(){
        us.save();
    }

}

 

posted @ 2018-06-13 10:03  小南天门  阅读(143)  评论(0编辑  收藏  举报