学习笔记:
<1>Spring的IOC原理(转载) - 孤傲苍狼 - 博客园
http://www.cnblogs.com/xdp-gacl/p/3707631.html
控制反转 = 依赖注入
<2>Spring注解@Component、@Repository、@Service、@Controller区别 - zhang854429783的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/zhang854429783/article/details/6785574
Spring2.5
component-scan标签默认情况下自动扫描指定路径下的包(含所有子包),将带有@Component、@Repository、@Service、@Controller标签的类自动注册到spring容器。对标记了 Spring's @Required、@Autowired、JSR250's @PostConstruct、@PreDestroy、@Resource、JAX-WS's @WebServiceRef、EJB3's @EJB、JPA's @PersistenceContext、@PersistenceUnit等注解的类进行对应的操作使注解生效(包含了annotation-config标签的作用)。
@Component不推荐使用
在接口前面标上@Autowired注释使得接口可以被容器注入。当接口存在两个实现类的时候必须使用@Qualifier指定注入哪个实现类,否则可以省略,只写@Autowired。
<3>struts+spring action应配置为scope="prototype" - 草原和大树 - 博客园
http://www.cnblogs.com/JemBai/archive/2010/11/10/1873954.html
在配置文件中,bean默认是单例模式,应用服务器启动后就会立即创建bean,以后就可以重复使用。这带来一个问题,bean的全局变量被赋值以后,在下一次使用时会把值带过去。也就是说,bean是有状态的。在web状态下,请求是多线程的,全局变量可能会被不同的线程修改,尤其在并发时会带来意想不到的bug。而在开发时,访问量很小,不存在并发、多线程的问题,程序员极有可能会忽视这个问题。所以在配置action bean时,应使用scope="prototype",为每一次request创建一个新的action实例。
<4>Spring常用注解 - 孤傲苍狼 - 博客园
http://www.cnblogs.com/xdp-gacl/p/3495887.html
使用@Controller注解标识UserAction之后,就表示要把UserAction交给Spring容器管理,在Spring容器中会存在一个名字为"userAction"的action,这个名字是根据UserAction类名来取的。注意:如果@Controller不指定其value【@Controller】,则默认的bean名字为这个类的类名首字母小写,如果指定value【@Controller(value="UserAction")】或者【@Controller("UserAction")】,则使用value作为bean的名字。
<5>@Repository、@Service、@Controller 和 @Component - ye1992的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/ye1992/article/details/19971467
@Repository注解用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。
Spring 2.5 在 @Repository的基础上增加了功能类似的额外三个注解:@Component、@Service、@Constroller,它们分别用于软件系统的不同层次:
@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。
通过在类上使用 @Repository、@Component、@Service 和 @Constroller 注解,Spring会自动创建相应的 BeanDefinition 对象,并注册到ApplicationContext 中。这些类就成了 Spring受管组件。这三个注解除了作用于不同软件层次的类,其使用方式与 @Repository 是完全相同的。
另外,除了上面的四个注解外,用户可以创建自定义的注解,然后在注解上标注 @Component,那么,该自定义注解便具有了与所@Component 相同的功能。不过这个功能并不常用。
自定义的命名策略BeanNameGenerator接口,确认包含了一个默认的无参数构造方法。然后在配置扫描器时提供一个全限定类名,如下所示:
如果你想提供一个自定义的作用域解析策略而不使用基于注解的方法,只需实现 ScopeMetadataResolver接口,确认包含一个默认的没有参数的构造方法。然后在配置扫描器时提供全限定类名:
https://my.oschina.net/boonya/blog/400808?p=1
(1)在Eclipse里新建一个web项目,导入我们需要的jar包,可以在这里下载:http://pan.baidu.com/s/1qW8Y6yo
(2)创建一个简单的数据库(springmybaitis)和数据表(user---id,username,password)。
(3)以用户管理为例,创建model和dao.
dao-----UserDao.xml:
(4)Spring配置文件----ApplicationContext.xml
(5)MyBatis的配置文件------mybatis-config.xml
<7>SSM框架的搭建(Spring+SpringMVC+Mybatis第一个项目的搭建) - geekfly的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/tmaskboy/article/details/51464791
(*很详细,待学习)
<8>Java框架搭建-Maven、Mybatis、Spring MVC整合搭建 - alun-chen - 博客园
http://www.cnblogs.com/alunchen/p/5632497.html
(*很详细,待学习)
<1>Spring的IOC原理(转载) - 孤傲苍狼 - 博客园
http://www.cnblogs.com/xdp-gacl/p/3707631.html
控制反转 = 依赖注入
<2>Spring注解@Component、@Repository、@Service、@Controller区别 - zhang854429783的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/zhang854429783/article/details/6785574
Spring2.5
component-scan标签默认情况下自动扫描指定路径下的包(含所有子包),将带有@Component、@Repository、@Service、@Controller标签的类自动注册到spring容器。对标记了 Spring's @Required、@Autowired、JSR250's @PostConstruct、@PreDestroy、@Resource、JAX-WS's @WebServiceRef、EJB3's @EJB、JPA's @PersistenceContext、@PersistenceUnit等注解的类进行对应的操作使注解生效(包含了annotation-config标签的作用)。
@Component不推荐使用
<?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:component-scan base-package=”com.eric.spring”>
</beans>
在接口前面标上@Autowired注释使得接口可以被容器注入。当接口存在两个实现类的时候必须使用@Qualifier指定注入哪个实现类,否则可以省略,只写@Autowired。
@Autowired
@Qualifier("chinese")
private Man man;
<3>struts+spring action应配置为scope="prototype" - 草原和大树 - 博客园
http://www.cnblogs.com/JemBai/archive/2010/11/10/1873954.html
在配置文件中,bean默认是单例模式,应用服务器启动后就会立即创建bean,以后就可以重复使用。这带来一个问题,bean的全局变量被赋值以后,在下一次使用时会把值带过去。也就是说,bean是有状态的。在web状态下,请求是多线程的,全局变量可能会被不同的线程修改,尤其在并发时会带来意想不到的bug。而在开发时,访问量很小,不存在并发、多线程的问题,程序员极有可能会忽视这个问题。所以在配置action bean时,应使用scope="prototype",为每一次request创建一个新的action实例。
<4>Spring常用注解 - 孤傲苍狼 - 博客园
http://www.cnblogs.com/xdp-gacl/p/3495887.html
使用@Controller注解标识UserAction之后,就表示要把UserAction交给Spring容器管理,在Spring容器中会存在一个名字为"userAction"的action,这个名字是根据UserAction类名来取的。注意:如果@Controller不指定其value【@Controller】,则默认的bean名字为这个类的类名首字母小写,如果指定value【@Controller(value="UserAction")】或者【@Controller("UserAction")】,则使用value作为bean的名字。
<5>@Repository、@Service、@Controller 和 @Component - ye1992的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/ye1992/article/details/19971467
@Repository注解用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。
Spring 2.5 在 @Repository的基础上增加了功能类似的额外三个注解:@Component、@Service、@Constroller,它们分别用于软件系统的不同层次:
@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。
通过在类上使用 @Repository、@Component、@Service 和 @Constroller 注解,Spring会自动创建相应的 BeanDefinition 对象,并注册到ApplicationContext 中。这些类就成了 Spring受管组件。这三个注解除了作用于不同软件层次的类,其使用方式与 @Repository 是完全相同的。
另外,除了上面的四个注解外,用户可以创建自定义的注解,然后在注解上标注 @Component,那么,该自定义注解便具有了与所@Component 相同的功能。不过这个功能并不常用。
自定义的命名策略BeanNameGenerator接口,确认包含了一个默认的无参数构造方法。然后在配置扫描器时提供一个全限定类名,如下所示:
<context:component-scan
base-package="a.b" name-generator="a.SimpleNameGenerator"/>
如果你想提供一个自定义的作用域解析策略而不使用基于注解的方法,只需实现 ScopeMetadataResolver接口,确认包含一个默认的没有参数的构造方法。然后在配置扫描器时提供全限定类名:
<context:component-scan base-package="a.b"
scope-resolver="footmark.SimpleScopeResolver" />
<6>Spring与Mybatis环境搭建 - boonya的个人页面 - 开源中国社区https://my.oschina.net/boonya/blog/400808?p=1
(1)在Eclipse里新建一个web项目,导入我们需要的jar包,可以在这里下载:http://pan.baidu.com/s/1qW8Y6yo
(2)创建一个简单的数据库(springmybaitis)和数据表(user---id,username,password)。
(3)以用户管理为例,创建model和dao.
dao-----UserDao.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.springMyBatis.system.dao.UserDao">
<select id="getUser" parameterType="com.springMyBatis.system.model.User" resultType="com.springMyBatis.system.model.User">
SELECT * FROM user WHERE username=#{username} AND password=#{password}
</select>
<insert id="addUser" parameterType="com.springMyBatis.system.model.User" flushCache="true">
INSERT INTO user (id,username,password) VALUES (#{id},#{username},#{password})
</insert>
<update id="updateUser" parameterType="com.springMyBatis.system.model.User">
UPDATE user SET password=#{password} WHERE id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id=#{id}
</delete>
(4)Spring配置文件----ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 配置数据源-->
<bean id="jdbcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/springmybaitis?useUnicode=true&characterEncoding=UTF-8</value>
<!--springmybaitis是我的数据库 -->
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="jdbcDataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.springMyBatis.system.dao.UserDao"></property>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
</beans>
(5)MyBatis的配置文件------mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<mappers>
<mapper resource="com/springMyBatis/system/dao/UserDao.xml"/>
</mappers>
</configuration>
<7>SSM框架的搭建(Spring+SpringMVC+Mybatis第一个项目的搭建) - geekfly的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/tmaskboy/article/details/51464791
(*很详细,待学习)
<8>Java框架搭建-Maven、Mybatis、Spring MVC整合搭建 - alun-chen - 博客园
http://www.cnblogs.com/alunchen/p/5632497.html
(*很详细,待学习)