Java项目中使用spring (annotation)
本文使用的項(xiàng)目和 java 項(xiàng)目中使用 sping (XML) 文章所使用的項(xiàng)目完全一樣,annotation 相比于 XML 方式配置要更加方便快捷。 但是 XML 方式?jīng)]有侵入性, 更加符合 spring 的特性。?
先看一下項(xiàng)目結(jié)構(gòu)吧:
?
然后是 Bean.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><context:annotation-config/><context:component-scan base-package="com.dqpi.spring" /></beans>context:annotation-config 表示使用 annotation 配置,context:component-scan 表示掃描所有 com.dqpi.spring 包下有注解的類(lèi), 完成 bean 的裝配。
常用注解:
@Controller?定義控制層 Bean, 如 Action
@Service????定義業(yè)務(wù)層 Bean
@Repository??定義 DAO 層 Bean
@Component?定義組件 Bean,不用具體區(qū)分時(shí)使用。
User 模型類(lèi)代碼:
@Component public class User {private int age;private String name;public int getAge () {return age;}@Value ("20")public void setAge (int age) {this.age = age;}public String getName () {return name;}@Value ("大白")public void setName (String name) {this.name = name;} }其中 @Value 注解是給變量賦值,可以寫(xiě)在成員屬性上也可以寫(xiě)在 set 方法上。
UserDao 接口
public interface UserDAO {public void save (User user);}UserDAOImp1 實(shí)現(xiàn)類(lèi)
@Component public class UserDAOImp1 implements UserDAO {@Overridepublic void save (User user) {System.out.println ("使用 MySQL 數(shù)據(jù)庫(kù)");System.out.println (user.getName ());}}UserDAOImp2 實(shí)現(xiàn)類(lèi)
@Component public class UserDAOImp2 implements UserDAO {@Overridepublic void save (User user) {System.out.println ("使用 Oracl 數(shù)據(jù)庫(kù)");}}Userservice 業(yè)務(wù)類(lèi)
@Component public class Userservice {private UserDAO userDAO;private User user;public UserDAO getUserDAO () {return userDAO;}@Resource (name="userDAOImp1")public void setUserDAO (UserDAO userDAO) {this.userDAO = userDAO;}public User getUser () {return user;}@Resourcepublic void setUser (User user) {this.user = user;}public void add () {this.userDAO.save (user);}}@Resource 是 JSR-250 提供的標(biāo)準(zhǔn),是由甲骨文收購(gòu) java 后提出的。@Resource 注解默認(rèn)按名稱(chēng)裝配,當(dāng)找不到名稱(chēng)匹配的 bean 再按類(lèi)型裝配.
還有一種自動(dòng)裝配的注解,就是 @Autowired ,它默認(rèn)按類(lèi)型匹配,自動(dòng)裝配 (Srping 提供的)。當(dāng)找到多個(gè)符合類(lèi)型出錯(cuò)時(shí),可以使用 @Qualifier 解決:
@Autowired
@Qualifier ("bean 的名字")?
UserMain 啟動(dòng)方法
public static void main (String [] args) {ApplicationContext context =new ClassPathXmlApplicationContext ("Bean.xml");Userservice userservice =context.getBean ("userservice",Userservice.class);userservice.add ();}?
執(zhí)行結(jié)果:
?
總結(jié)
以上是生活随笔為你收集整理的Java项目中使用spring (annotation)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 疯狂英语超级三最宝典
- 下一篇: 农村电子商务专家学者以及来自全国各地的淘