日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Spring学习笔记_IOC

發(fā)布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring学习笔记_IOC 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Spring簡介

1, ? 只用IOC

????? spring.jar , jarkata-commons/commons-loggin.jar

2,IOC容器

???? 實例化具體bean

??? 動態(tài)裝配

3,AOP支持

???? 安全檢查

???? 管理transaction

?Spring配置

1,注入類型

  • ??   setter(重要)
  • ???????? 構造方法(可以忘記)
  •   ? 接口注入(可以忘記)
<bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl"><!-- new UserDAOImpl()--></bean><bean id="userService" class="com.bjsxt.service.UserService"><!-- <property name="userDAO" ref="u" />  setter注入 ,調(diào)用setxxx方法--><constructor-arg>  <!-- 構造方法注入,需要在UserService里面寫構造方法,相當于調(diào)用了構造方法--><ref bean="u"/>   <!-- 參考了另外一個已經(jīng)new 的bean--></constructor-arg></bean>

?

public class UserService {private UserDAO userDAO;  public void add(User user) {userDAO.save(user);}public UserDAO getUserDAO() {return userDAO;}public void setUserDAO(UserDAO userDAO) {this.userDAO = userDAO;}public UserService(UserDAO userDAO) {//用于構造方法注入super();this.userDAO = userDAO;}
}

?

?

2,id vs. name

  name可以用特殊字符

<bean name="u" class="com.bjsxt.dao.impl.UserDAOImpl"></bean><bean id="userService" class="com.bjsxt.service.UserService"><!-- <property name="userDAO" ref="u" />--><constructor-arg><ref bean="u"/></constructor-arg></bean>

?

3,簡單屬性的注入

bean name="userDAO" class="com.bjsxt.dao.impl.UserDAOImpl"><property name="daoId" value="8"></property><property name="daoStatus" value="good"></property></bean>

?

public class UserDAOImpl implements UserDAO {private int daoId;private String daoStatus;public int getDaoId() {return daoId;}public void setDaoId(int daoId) {this.daoId = daoId;}public String getDaoStatus() {return daoStatus;}public void setDaoStatus(String daoStatus) {this.daoStatus = daoStatus;}public void save(User user) {System.out.println("user saved!");}@Overridepublic String toString() {return this.daoId + ":" + this.daoStatus;}
}

?

?

?4,bean 中的scope屬性

?  singleton:只有一個

  prototype:每一個都不同

?

5,集合注入

?  很少用,不重要!

public class UserDAOImpl implements UserDAO {/* (non-Javadoc)* @see com.bjsxt.dao.UserDAO#save(com.bjsxt.model.User)*/private Set<String> sets;private List<String> lists;private Map<String , String> maps;public Set<String> getSets() {return sets;}public void setSets(Set<String> sets) {this.sets = sets;}public List<String> getLists() {return lists;}public void setLists(List<String> lists) {this.lists = lists;}public Map<String, String> getMaps() {return maps;}public void setMaps(Map<String, String> maps) {this.maps = maps;}public UserDAOImpl() {}public void save(User user) {System.out.println("user saved!");}@Overridepublic String toString() {return "sets size:" + sets.size() + "| lists size:" + lists.size() + "| maps size:" + maps.size() ; }}

?

?

<bean name="userDAO" class="com.bjsxt.dao.impl.UserDAOImpl"><property name="sets"><set><value>1</value><value>2</value></set></property><property name="lists"><list><value>1</value><value>2</value><value>3</value></list></property><property name="maps"><map><entry key="1" value="1"></entry><entry key="2" value="2"></entry><entry key="3" value="3"></entry><entry key="4" value="4"></entry></map></property></bean><bean id="userService" class="com.bjsxt.service.UserService"><!-- <property name="userDAO"><ref bean="userDAO"/></property>--><constructor-arg><ref bean="userDAO"/></constructor-arg></bean>

?

?

6,自動裝配

  • ???? byName
  • ???? byType
  • ???? 如果所有的bean都用同一種,可以使用beans的屬性:default-autowire
 <bean name="userDAO" class="com.bjsxt.dao.impl.UserDAOImpl"><property name="daoId" value="1"></property></bean><bean name="userDAO2" class="com.bjsxt.dao.impl.UserDAOImpl"><property name="daoId" value="2"></property></bean><bean id="userService" class="com.bjsxt.service.UserService" scope="prototype" autowire="byName">
<!-- 未指定property, 若是byname則自動匹配name等于userDAO的bean,
若是bytype則匹配類型為userDAO的bean-->

</bean>

?

?

public class UserDAOImpl implements UserDAO {private int daoId;public int getDaoId() {return daoId;}public void setDaoId(int daoId) {this.daoId = daoId;}public void save(User user) {System.out.println("user saved!");}@Overridepublic String toString() {return "daoId=" + daoId;}}

?

?

7,生命周期

  • ???? lazy-init (不重要)? 容器初始化時(ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml")),不初始化,只有用到時才初始化
<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>

?

  • ???? init-method destroy-methd 不要和prototype一起用(了解)
<bean id="userService" class="com.bjsxt.service.UserService" init-method="init" destroy-method="destroy" scope="singleton"><!-- <property name="userDAO" ref="u" />--><constructor-arg><ref bean="u"/></constructor-arg></bean>

?

?

public class UserService {private UserDAO userDAO;  public void init() {System.out.println("init");}public void add(User user) {userDAO.save(user);}public UserDAO getUserDAO() {return userDAO;}public void setUserDAO(UserDAO userDAO) {this.userDAO = userDAO;}public UserService(UserDAO userDAO) {super();this.userDAO = userDAO;}public void destroy() {System.out.println("destroy");}
}

?

8,Annotation第一步:

???? 修改xml文件,參考文檔<context:annotation-config />

<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-2.5.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd"><context:annotation-config />
<bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl"></bean><bean id="u2" class="com.bjsxt.dao.impl.UserDAOImpl"></bean><bean id="userService" class="com.bjsxt.service.UserService" ></bean></beans>

?

9,@Autowired(自動裝配)

  • ???? 默認按類型by type
  • ???? 如果想用byName,使用@Qulifier
  • ???? 寫在private field(第三種注入形式)(不建議,破壞封裝)
  • ???? 如果寫在set上,@qualifier需要寫在參數(shù)上
public class UserService {private UserDAO userDAO;  public void init() {System.out.println("init");}public void add(User user) {userDAO.save(user);}public UserDAO getUserDAO() {return userDAO;}@Autowiredpublic void setUserDAO(@Qualifier("u") UserDAO userDAO) {this.userDAO = userDAO;}public void destroy() {System.out.println("destroy");}
}

?

10,@Resource(重要)

  • ???? 加入:j2ee/common-annotations.jar
  • ???? 默認按名稱,名稱找不到,按類型? @Resource
  • ???? 可以指定特定名稱? @Resource(name="u2")
  • ???? 推薦使用
  • ???? 不足:如果沒有源碼,就無法運用annotation,只能使用xml
<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-2.5.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd"><context:annotation-config /><bean id="userDAO" class="com.bjsxt.dao.impl.UserDAOImpl"></bean><bean id="u2" class="com.bjsxt.dao.impl.UserDAOImpl"></bean><bean id="userService" class="com.bjsxt.service.UserService" ></bean></beans>

?

?

public class UserService {private UserDAO userDAO;  public void init() {System.out.println("init");}public void add(User user) {userDAO.save(user);}public UserDAO getUserDAO() {return userDAO;}@Resource(name="u2")//@Resourcepublic void setUserDAO( UserDAO userDAO) {this.userDAO = userDAO;}public void destroy() {System.out.println("destroy");}
}

?

?

11,@Component @Service @Controller @Repository? 在spring2.5.6中 這四個目前沒有區(qū)別

  • ???? 初始化的名字默認為類名首字母小寫
  • ???? 可以指定初始化bean的名字 @Component("u")
<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-2.5.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd"><context:annotation-config /><context:component-scan base-package="com.bjsxt"/>
</beans>

?

?

@Component("u") //u=new UserDAO()
public class UserDAOImpl implements UserDAO {public void save(User user) {System.out.println("user saved!");}}

?

?

@Component("userService")
public class UserService {private UserDAO userDAO;  public void init() {System.out.println("init");}public void add(User user) {userDAO.save(user);}public UserDAO getUserDAO() {return userDAO;}@Resource(name="u") //把name=u的UserDAO注入public void setUserDAO( UserDAO userDAO) {this.userDAO = userDAO;}public void destroy() {System.out.println("destroy");}
}

?

?

12,@Scope

?

13,@PostConstruct = init-method; @PreDestroy = destroy-method;

@Scope("singleton")
@Component("userService")
public class UserService {private UserDAO userDAO;  @PostConstructpublic void init() {System.out.println("init");}public void add(User user) {userDAO.save(user);}public UserDAO getUserDAO() {return userDAO;}@Resource(name="u")public void setUserDAO( UserDAO userDAO) {this.userDAO = userDAO;}@PreDestroypublic void destroy() {System.out.println("destroy");}
}

?

轉(zhuǎn)載于:https://www.cnblogs.com/enjoy-life-clh/p/4227485.html

總結(jié)

以上是生活随笔為你收集整理的Spring学习笔记_IOC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。