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基於註解開發比較簡便,註解開發也是趨勢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章