專業(yè)網(wǎng)站建設(shè)模板北京搜索引擎優(yōu)化seo專員
標題
- 注入
- 依賴注入的方式
- 通過Set方法注入
- 通過構(gòu)造方法注入
- 自動注入
- 依賴注入的數(shù)據(jù)類型
- 注入Bean對象
- 注入基本數(shù)據(jù)類型和字符串
- 注入List
- 注入Set
- 注入Map
- 注入Properties
- 注解實現(xiàn)IOC
- Component
- @Repository、@Service、@Controller
注入
依賴注入的方式
在使用依賴注入時,如果注入的是 Bean 對象,那么要求注入的 Bean 對象與被注入的
Bean 對象都需要 Spring
通過Set方法注入
需要為注入的成員變量提供 Set 方法。
- 配置文件
<bean id="usersDao" class="com.bjsxt.dao.impl.UsersDaoImpl"/>
<bean id="usersDaoMybatis" class="com.bjsxt.dao.impl.UsersDaoImpl"/>
<bean id="usersService" name="name1,name2,name3" class="com.bjsxt.service.impl.UsersServiceImpl"><!--<name要和UsersServiceImpl中屬性名相同--><property name="usersDao"><ref bean="usersDaoMybatis"/></property>
<!--<property name="usersDao" ref="usersDaoMybatis"/>-->
</bean>
- Bean對象
private UsersDao usersDao;
public UsersDao getUsersDao() {return usersDao;
}
public void setUsersDao(UsersDao usersDao) {this.usersDao = usersDao;
}
通過構(gòu)造方法注入
Bean 對象中需要提供有參的構(gòu)造方法
- 配置文件
<bean id="usersDaoMybatis" class="com.bjsxt.dao.impl.UsersDaoMybatisImpl"/>
<bean id="usersService" name="name1, name2, name3" class="com.bjsxt.service.impl.UsersServiceImpl"><!--<property name="usersDao" ref="usersDaoMybatis"/>--><!--一個constructor-arg標簽表示構(gòu)造方法中的一個參數(shù)name:根據(jù)參數(shù)名稱識別參數(shù)index:根據(jù)參數(shù)的位置識別參數(shù)type:根據(jù)參數(shù)類型識別參數(shù)--><constructor-arg type="com.bjsxt.dao.UsersDao"><ref bean="usersDaoMybatis"/></constructor-arg>
</bean>
2.Bean對象
private UsersDao usersDao;
public UsersServiceImpl(UsersDao usersDao){this.usersDao = usersDao;
}
自動注入
自動注入的方式有兩種,一種是全局配置自動注入,另一種是局部配置自動注入。
無論全局配置或局部單獨配置,都有 5 個值可以選擇:
- no:當 autowire 設(shè)置為 no 的時候,Spring 就不會進行自動注入。
- byName:在 Spring 容器中查找 id 與屬性名相同的 bean,并進行注入。需要提供 set 方
法。 - byType:在 Spring 容器中查找類型與屬性名的類型相同的 bean,并進行注入。需要提
供 set 方法。 - constructor:仍舊是使用 byName 方式,只不過注入的時候,使用構(gòu)造方式進行注入。
- default:全局配置的 default 相當于 no,局部的 default 表示使用全局配置設(shè)置
局部自動注入:通過 bean 標簽中的 autowier 屬性配置自動注入,有效范圍:僅針對當前 bean 標簽生效
全局自動注入:通過 beans 標簽中的 default-autowire , 有效范圍:配置文件中的所有 bean
依賴注入的數(shù)據(jù)類型
注入Bean對象
方式一:
<property name="FieldName"><ref bean="BeanID"/>
</property>
方式二:
<property name="FieldName" ref="BeanID"/>
注入基本數(shù)據(jù)類型和字符串
方式一:
<property name="FieldName"><value>content</value>
</property>
<!--content是要傳入內(nèi)容的值-->
方式二
<property name="FieldName" value="Content"/>
注入List
<property name="users"><list><bean class="com.bjsxt.pojo.Users"><property name="username" value="Oldlu"/><property name="userage" value="30"/></bean><bean class="com.bjsxt.pojo.Users"><property name="username" value="admin"/><property name="userage" value="20"/></bean></list></property>
注入Set
<property name="usersSet"><set><bean class="com.bjsxt.pojo.Users"><property name="username" value="Oldlu-set"/><property name="userage" value="30"/></bean><bean class="com.bjsxt.pojo.Users"><property name="username" value="admin-set"/><property name="userage" value="20"/></bean></set></property>
注入Map
方式一:
<property name="map"><map><entry key="key1" value="value1"/><entry key="key2" value="value2"/></map></property>
方式二:
<bean id="users1" class="......">
<bean id="users1" class="......">
<property name="FieldName"><map><entry key="key1" value-ref="users1"/><entry key="key2" value-ref="users2"/></map>
</property>
注入Properties
<property name="FieldName" ><props><prop key="KeyName">Content</prop></props>
</property>
注解實現(xiàn)IOC
E:\java\Spring\spring_ioc2
Component
作用:用于創(chuàng)建對象,放入Spring容器,相當于 <bean id="" class="">
注意:
- 要在配置文件中配置掃描的包,掃描到該注解才能生效。
context:component-scan base-package="com.itbaizhan"> </context:component-scan>
- @Component 注解配置bean的默認id是首字母小寫的類名。也
可以手動設(shè)置bean的id值。
/ 此時bean的id為studentDaoImpl
@Component
public class StudentDaoImpl implements
StudentDao{public Student findById(int id) {// 模擬根據(jù)id查詢學生return new Student(1,"百戰(zhàn)程序
員","北京");}}// 此時bean的id為studentDao
@Component("studentDao")
public class StudentDaoImpl implements
StudentDao{public Student findById(int id) {// 模擬根據(jù)id查詢學生return new Student(1,"百戰(zhàn)程序
員","北京");}
}
@Repository、@Service、@Controller
作用:這三個注解和@Component的作用一樣,使用它們是為了區(qū)分該類屬于什么層。
- @Repository用于Dao層
- @Service用于Service層
- @Controller用于Controller層
@Scope指定bean的創(chuàng)建策略:singleton prototype request session globalsession