Spring框架搭建
来源:互联网 发布:一亿玉碎 知乎 编辑:程序博客网 时间:2024/09/21 06:35
使用普通的java工程或者web工程,需要下载Spring的相关jar包。
使用maven搭建,省去了下载jar包这一步。下面就使用maven来搭建一个Spring项目。
一、
1、在pom.xml文件中添加依赖:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.iflytek</groupId><artifactId>mavenspring</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><!-- Spring依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.13.RELEASE</version><!-- <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> --></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.13.RELEASE</version><scope>runtime</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies></project>
2、在resources资源文件夹下创建两个文件:
log4j.properties为日志文件:
log4j.rootCategory=INFO, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%nlog4j.category.org.springframework.beans.factory=DEBUG
applicationContext.xml为Spring的配置文件:在配置文件中完成注入
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" 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.xsd"><bean id="ud" class="com.iflytek.dao.UserDao"></bean><bean id="us" class="com.iflytek.service.UserService"><property name="userDao" ref="ud"></property></bean></beans>
ref表示注入对象,基本类型用value。
3、代码:
实体类:
package com.iflytek.domain;public class User {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}dao:
package com.iflytek.dao;import com.iflytek.domain.User;public class UserDao {public User getUserById(int i) {User user = new User();user.setId(10);user.setName("zhangsan");return user;}}service:
package com.iflytek.service;import com.iflytek.dao.UserDao;public class UserService {private UserDao userDao;public UserDao getUserDao() {return userDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}}
测试类:现在就不需要像以前一样去new对象了:
package com.iflytek.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.iflytek.domain.User;import com.iflytek.service.UserService;public class App {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");//把IOC容器中的us对象取出来UserService service = context.getBean("us", UserService.class);User user = service.getUserDao().getUserById(10);System.out.println(user.getName());}}
二、一中用的是配置文件的方法去注入容器,还有一种是注解的方法(具体见三讲解):下面结合Spring整合hibernate来写一个实例:
1、先在pom.xml文件中添加需要的依赖:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.iflytek</groupId><artifactId>mavenspringhibernate</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.13.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.13.RELEASE</version><scope>runtime</scope></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.3.13.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.3.13.RELEASE</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.3.11.Final</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies></project>
2、在resorces资源文件夹下创建两个文件:
其中applicationContext.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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 支持spring注解 --> <context:component-scan base-package="com.iflytek"></context:component-scan><!-- hibernate的配置 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property><property name="url" value="jdbc:oracle:thin:@172.16.130.35:1521:orcl"></property><property name="username" value="wtyy1"></property><property name="password" value="wtyy1"></property></bean><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="packagesToScan" value="com.iflytek.domain"></property><property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> <prop key="hibernate.hbm2ddl.auto">create</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> </props></property></bean></beans>
3、代码
pojo:
package com.iflytek.domain;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;import org.springframework.stereotype.Component;//把user对象创建(默认的名字为:对象的名字小写),然后加入到容器中@Entity@Table(name="t_user")@Componentpublic class User {private int id;private String name;@Idpublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
dao:
package com.iflytek.dao;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.springframework.stereotype.Repository;import com.iflytek.domain.User;@Repositorypublic class UserDao {@Resourceprivate SessionFactory sessionFactory;@Resourceprivate User user;public void save() {Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();user.setId(1002);user.setName("测试");session.save(user);tx.commit();session.close();}}service:
package com.iflytek.service;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.iflytek.dao.UserDao;@Servicepublic class UserService {@Resourceprivate UserDao userDao;public UserService() {}public UserService(UserDao userDao) {this.userDao = userDao;System.out.println("userservice construct run...");}}
测试类:
package com.iflytek.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.iflytek.dao.UserDao;public class App {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao bean = context.getBean(UserDao.class);bean.save();}}
三、spring常用注解说明:
@Service用于标注业务层组件、 @Controller用于标注控制层组件(如struts中的action)@Repository用于标注数据访问组件,即DAO组件。@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。(pojo)@Scope用于指定scope作用域的(用在类上)@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。@Resource的装配顺序:(1)、@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配(2)、指定了name或者type则根据指定的类型去匹配bean(3)、指定了name和type则根据指定的name和type去匹配bean,任何一个不匹配都将报错@Autowired和@Resource两个注解的区别:a.@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入; b.@Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用; c.@Resource注解是由JDK提供,而@Autowired是由Spring提供 @Resource的方式;d. @Resource和@Autowired都可以书写标注在字段或者该字段的setter方法之上
阅读全文
0 0
- Spring框架搭建
- spring框架搭建
- Spring mvc 框架搭建
- spring框架搭建笔记
- Spring框架搭建
- spring mvc 框架搭建
- Struts2+Spring框架搭建
- Spring框架搭建
- Spring搭建框架
- 搭建spring框架
- Spring mvc框架搭建
- 搭建spring框架步骤
- Spring框架的搭建
- spring+mybatis 框架搭建
- Spring框架的搭建
- Spring框架的搭建
- Spring框架搭建
- spring 框架搭建
- python3.5 pip install markdown 时发生 "ValueError:the shebang (b'#!c:...)is not decode from utf8"
- Maven的聚合及继承
- 常用的分布式事务解决方案
- C++中const成员函数和非const成员函数的重载
- Python基础学习(2)
- Spring框架搭建
- 选择排序函数
- vue2.0之多页面的开发
- iOS WKWebView禁止长按事件(包括超链接)
- sublime 中 swig 文件如何高亮
- LeetCode 165. Compare Version Numbers
- 安卓低功耗蓝牙
- Hadoop五个进程的作用和联系
- js之dom事件的高级补充