您好,登錄后才能下訂單哦!
public interface UserDao { public void sayHello(); } @Component(value="userDao") public class UserDaoImpl implements UserDao { @Override public void sayHello() { System.out.println("Hello Spring Annotation..."); }
Spring中提供@Component的三個衍生注解:(功能目前來講是一致的)
* @Controller :WEB層
* @Service :業務層
* @Repository :持久層
這三個注解是為了讓標注類本身的用途清晰,Spring在后續版本會對其增強
@Value :用于注入普通類型.
@Autowired :自動裝配:
* 默認按類型進行裝配.
* 按名稱注入:
* @Qualifier:強制使用名稱注入.
@Resource相當于:
* @Autowired和@Qualifier一起使用.
@Scope:
* singleton:單例
* prototype:多例
@PostConstruct :相當于init-method
@PreDestroy :相當于destroy-method
@PostConstruct說明
被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,并且只會被服務器調用一次,類似于Serclet的inti()方法。被@PostConstruct修飾的方法會在構造函數之后,init()方法之前運行。
@PreConstruct說明
被@PreConstruct修飾的方法會在服務器卸載Servlet的時候運行,并且只會被服務器調用一次,類似于Servlet的destroy()方法。被@PreConstruct修飾的方法會在destroy()方法之后運行,在Servlet被徹底卸載之前。
XML和注解:
* XML :結構清晰.
* 注解 :開發方便.(屬性注入.)
實際開發中還有一種XML和注解整合開發:
* Bean有XML配置.但是使用的屬性使用注解注入
關于注解1:工作中有一次犯了一個很嚴重的問題:
關于注解2:想要兩個類使用同一個變量,而且兩個類有關系,通過注入方式建立兩個類的對象產生關系。但是如果想要共用一個對象,建立對象可以通過有參構造傳入(new A("xxx")),但是注解建立對象我不會傳參。但可以通過配置文件和注解相結合使用。
第二張圖演示了properties文件屬性的使用方法,在工作中,又遇見另外一種(在這里演示)
首先,在spring的主配文件中要配置:
<!-- 加載applicationConfig.properties文件,獲取屬性文件的內容 --> <bean id="propertyConfigurer" class="com.ad.utils.GlobalProperties"> <property name="ignoreResourceNotFound" value="true" /> <property name="locations"> <list> <value>classpath:applicationConfig.properties</value> ...... </list> </property> </bean>
然后寫出實現類:
import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; /** * 自定義PropertyPlaceholderConfigurer返回properties內容 * */ public class GlobalProperties extends PropertyPlaceholderConfigurer{ private static Map<String, Object> ctxPropertiesMap; @Override protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess,Properties props) throws BeansException { super.processProperties(beanFactoryToProcess, props); ctxPropertiesMap = new HashMap<String, Object>(); for (Object key : props.keySet()) { String keyStr = key.toString(); String value = props.getProperty(keyStr); ctxPropertiesMap.put(keyStr, value); } } public static Object getContextProperty(String name) { return ctxPropertiesMap.get(name); } /** * 獲取屬性值 * @param key * @return */ public static String getProperties(String key){ Object value = ctxPropertiesMap.get(key); return value != null ? String.valueOf(value) : ""; } /** *獲取屬性值,返回××× * @param key * @return */ public static Integer getInteger(String key){ Object value = ctxPropertiesMap.get(key); return value != null ? Integer.valueOf(value.toString()) : 0; } }
最后是使用方法:
GlobalProperties.getProperties("XXXXX").trim();
補:spring的bean管理xml方式
創建service類和dao類
在service中得到dao對象
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。