Spring 注解开发

Spring 注解开发

介绍

Spring2.5之前Spring只提供xml配置开发,Spring2.5之后提供注解开发Spring.
基于XML配置开发和基于注解开发各自都有优点,就目前趋势和开发效率而言,强烈推荐使用注解开发。

Spring注解应用

标识JavaBean为Spring IOC容器管理对象的四个注解

1.@Component:基本注解
2.@Respository:标识持久层组件
3.@Service:标识服务层(业务层)组件
4.@Controller:标识控制器组件(Struts2.x里的Action或Spring MVC的Controller)

备注:以上四种组件其实并没有区别,只不过是名称不同更好的细分.

备注:对于扫描到的组件,Spring有默认的命名策略:将类名第一个字母小写.也可以在注解中通过value属性值标识组件的名称.

<!-- 自动扫描配置 -->
<context:component-scan base-package="com.xxx"/>

组件装配(自动装配)

1、@Autowired(Spring提供支持)
2、@Resource(Java自带支持)
3、@Inject(Java自带支持)


日常开发中使用Autowired也可以,但是遇到组件名有冲突时那么需要借助Qualifier注解来过滤。

遇到组件冲突情况时,也可以使用Resource注解,Resource注解可以配置name过滤。

举例

UserDao接口

    UserDaoJdbcImpl实现
    UserDaoJpaImp实现
当UserDao接口有多种实现时,如果只使用Spring的默认自动装配那么就会出现冲突了。

public interface UserDao
{
    void addUser();
}

@Repository(value = "userDaoJdbc")
public class UserDaoJdbcImpl implements UserDao
{
    @Override
    public void addUser()
    {
        System.out.println("jdbc addUser...");
    }
}

@Repository(value = "userDaoJpa")
public class UserDaoJpaImpl implements UserDao
{
    @Override
    public void addUser()
    {
        System.out.println("jpa addUser...");
    }
}

@Service(value="userService")
public class UserService
{

    //方式1
    //  @Autowired
    //  @Qualifier(value="userDaoJdbc")

    //方式2
    //  @Resource(name="userDaoJpa")

    @Resource(name="userDaoJpa")
    private UserDao userDao;

    public void addUser()
    {
        userDao.addUser();
    }
}

备注:如果仅仅使用Autowired,那么上述情况Spring加载时就无法确定到底初始化那个对象了,因此会报错。

Spring其它常用注解

@Scope
@Value
@Qualifier
@Lazy
@AliasFor
@Order
@Primary
@Required
@PostConstruct
@PreDestory

@Bean
@Configuration
@ComponentScan
@ComponentScans

总结

Spring基于注解开发比较简便,注解开发也是趋势。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章