一篇Spring带你快速入门ssh

Spring注解注入

2019-02-14  本文已影响12人  往事随风_0817

Spring注解注入

Spring2.5引入注解方式去定义Bean

//首先在XML中加入context约束
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"

//扫描包
<context:component-scan base-package="com.akwangl.dome"/>
//开启注解配置
<context:annotation-config/>

//java
@Component("userService")
public class UserService {
    private String something;

    @Autowired
    private UserDao userDao;

    public String sayHello(String name){
        return "Hello" + name;
    }

    public void eat(){
        System.out.println("eat:"+something);
    }

    public void save(){
        System.out.println("Service中保存用户...");
        userDao.save();
    }
}

@Repository("userDao")
public class UserDao {
    public void save(){
        System.out.println("DAO中保存用户...");
    }
}

除了@Component外,Spring提供了3个功能基本和@Component等效的注解

Spring属性注入-注解方式

@Repository("userDao")
public class UserDao {}

@Service("userService")
public class UserService {

    @Autowired
    private UserDao userDao;
}
@Service("userService")
public class UserService {

    @Autowired
    @Qualifier("userDao")
    private UserDao userDao;
}

使用Qualifier指定Bean名称后,注解Bean必须指定相同名称

@Service("userService")
public class UserService {
    @Resource(name="userDao")
    private UserDao userDao;
}

Spring其他注解

@Component("bean1")
public class Bean1 {
    @PostConstruct
    public void init(){
        System.out.println("initBean...");
    }

    public void say(){
        System.out.println("say...");
    }

    @PreDestroy
    public void destory(){
        System.out.println("destoryBean...");
    }
}

Bean的作用范围

使用XML方式配置Bena的作用范围与@注解方式,都会默认将作用范围设置为Singleton(单例)

@Component("bean2")
@Scope("prototype")->这里的值可以设置为:singleton、prototype、request、session
public class Bean2 {

}
上一篇下一篇

猜你喜欢

热点阅读