spring学习笔记-2
来源:互联网 发布:高仿卡西欧手表淘宝店 编辑:程序博客网 时间:2024/05/16 09:04
##基于注解(Annotation-based)的配置
要使得配置可用,需在xml的命名空间加入:
<bean id="u" class="com.dao.impl.UserDAOImpl"></bean>
<bean id="u2" class="com.dao.impl.UserDAOImpl"></bean>
去掉其中一个Bean。
##@Component
一个Component的例子:
1.beans.xml文件
3.UserService.java
<property name="userDAO" ref="u"></property>
</bean>
4.UserServiceTest.java
Component一般要求后面加入一个名字,如果没有加,默认是:类名首字母小写。
##Scope
通常受Spring管理的组件,默认或者最常用的作用域是“singleton”。然而,有时也会需要其他的作用域。 因此Spring 2.5还引入了一个新的@Scope注解。只要在注解中提供作用域的名称就行了, 比方说:
@PostConstruct
public void init() {
System.out.println("init");
}
表示在初始化之前会执行init()方法。
@PreDestroy
public void destroy() {
System.out.println("destroy");
}
表示在容器销毁之前会执行destroy()。
要使得配置可用,需在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/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config/> </beans>##@Resource
1.beans.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/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config /> <bean id="u" class="com.dao.impl.UserDAOImpl"> </bean> <bean id="u2" class="com.dao.impl.UserDAOImpl"> </bean> <bean id="userService" class="com.service.UserService" > </bean> </beans>2.@Resource有一个‘name’属性,缺省时,Spring 将这个值解释为要注射的 bean 的名字。换句话说,如果遵循by-name的语法,如下例:
public class SimpleMovieLister { private MovieFinder movieFinder; @Resource(name="myMovieFinder") public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } }如果没有显示的给出名字,它会首先按照by-name去找,name值为:属性名,如下面名字就是:moveFinder,如果找不到它会遵循by-type的语法,因此上面的beans.xml文件不能有2个相同类型的Bean,
public class SimpleMovieLister { private MovieFinder movieFinder; @Resource public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; }}修改xml文件:
<bean id="u" class="com.dao.impl.UserDAOImpl"></bean>
<bean id="u2" class="com.dao.impl.UserDAOImpl"></bean>
去掉其中一个Bean。
##@Component
一个Component的例子:
1.beans.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/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config /> <context:component-scan base-package="com"/> </beans>2.UserDAOImpl.java
package com.dao.impl; import org.springframework.stereotype.Component; import com.dao.UserDAO; import com.model.User; @Component("u") public class UserDAOImpl implements UserDAO { public void save(User user) { System.out.println("user saved!"); }}他代替了配置文件里的:<bean id="u" class="com.dao.impl.UserDAOImpl"></bean>这句话
3.UserService.java
package com.service; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.dao.UserDAO; import com.model.User; @Component("userService") public class UserService { private UserDAO userDAO; public void add(User user) { userDAO.save(user); } public UserDAO getUserDAO() { return userDAO; } @Resource(name="u") public void setUserDAO( UserDAO userDAO) { this.userDAO = userDAO; } }这里的配置代替了XML文件的: <bean id="userService" class="com.service.UserService" >
<property name="userDAO" ref="u"></property>
</bean>
4.UserServiceTest.java
package com.service; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.model.User; public class UserServiceTest { @Test public void testAdd() throws Exception { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); UserService service = (UserService)ctx.getBean("userService"); service.add(new User()); ctx.destroy(); } }运行结果为:User save!
Component一般要求后面加入一个名字,如果没有加,默认是:类名首字母小写。
##Scope
通常受Spring管理的组件,默认或者最常用的作用域是“singleton”。然而,有时也会需要其他的作用域。 因此Spring 2.5还引入了一个新的@Scope注解。只要在注解中提供作用域的名称就行了, 比方说:
@Scope("prototype") @Component("userService") public class UserService { private UserDAO userDAO; public void add(User user) { userDAO.save(user); } public UserDAO getUserDAO() { return userDAO; } @Resource(name="u") public void setUserDAO( UserDAO userDAO) { this.userDAO = userDAO; } }##@PostConstruct and @PreDestroy
@PostConstruct
public void init() {
System.out.println("init");
}
表示在初始化之前会执行init()方法。
@PreDestroy
public void destroy() {
System.out.println("destroy");
}
表示在容器销毁之前会执行destroy()。
0 0
- spring学习笔记2
- Spring学习笔记2
- spring学习笔记(2)
- spring 学习笔记2
- Spring学习笔记(2)
- Spring学习笔记(2)
- spring学习笔记2
- spring学习笔记-2
- Spring学习笔记2
- Spring学习笔记2
- Spring 学习笔记2
- spring学习笔记2
- Spring学习笔记2
- Spring 学习笔记2
- spring学习笔记(2)
- Spring学习笔记(2)
- [2] spring mvc学习笔记
- spring学习笔记(2)
- Windows下的路径函数封装
- java 读写xml(dom4j)
- C++ 智能指针详解
- Apache 日志文件设置
- Java BEAN-是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念。
- spring学习笔记-2
- 仿乐享微信源码分享
- python 多线程
- ios常见加密解密方法
- java 读写xml(jdom)
- Matlab SVM工具箱的使用
- Linux平台部署jira
- android样式布局--->ListView(附上源码)
- flex HeaderControllerWidget不显示搜索框