Spring 在 xml配置文件或annotation注解中运用Spring EL

Spring  EL
一:在Spring xml 配置文件中运用   Spring EL
Spring EL 采用 #{Sp Expression  Language} 即 #{spring表达式}
1:运用EL表达式的配置文件如下:

<?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-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  <!-- more bean definitions for data access objects go here -->
  
  <bean id="book" class="com.myapp.core.spel.xml.Book">
   <property name="name" value="Effective Java" />
   <property name="pages" value="300"/>
  </bean>
   
   <bean id="person" class="com.myapp.core.spel.xml.Person">
    <property name="book" value="#{book}" />
    <property name="bookName" value="#{book.name}"/>
   </bean>
</beans>

在person  bean 的配置中, 属性 book 引用了  book bean 通过EL表达式 形式是:<property name="book" value="#{book}" /> 相当于 在person bean中注入 book
person属性中的bookName属性注入了 book bean中的 name的值  
2:测试以上配置:
Book类:
package com.myapp.core.spel.xml;

public class Book {
	private  String  name ;
	private  int   pages;
  
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getPages() {
		return pages;
	}
	public void setPages(int pages) {
		this.pages = pages;
	}
	  
}

Person类:
package com.myapp.core.spel.xml;

public class Person {
   private  Book  book;
   
   private  String  bookName;


public void setBook(Book book) {
	this.book = book;
}

public Book getBook(){
	 return  this.book;
}

public  String   getBookName(){
	return  this.bookName;
}

public void setBookName(String bookName) {
	this.bookName = bookName;
}
}

测试类:
package com.myapp.core.spel.xml;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainTest { 
	public static void main(String[] args) {
		
		ApplicationContext  context  = new  ClassPathXmlApplicationContext("resource/spel.xml");
		
		Person  person =  (Person)context.getBean("person");
		
		System.out.println(person.getBookName());
		
		System.out.println(person.getBook().getPages());
	}
}

输出结果:
三月 18, 2013 5:17:18 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@11e831: startup date [Mon Mar 18 17:17:18 CST 2013]; root of context hierarchy
三月 18, 2013 5:17:18 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [resource/spel.xml]
三月 18, 2013 5:17:18 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@498b39: defining beans [book,person]; root of factory hierarchy
Effective Java
300

二:注解中使用 EL
1: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-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  <!-- more bean definitions for data access objects go here -->
  

<context:component-scan base-package="com.myapp.core.spel.annotation" />
   
   
</beans>

2:相应的类:

Book类:
package com.myapp.core.spel.annotation;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("book")
public class Book {
	
	@Value("Effective Java")
	private  String  name ;
	
	@Value("300")
	private  int   pages;
  
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getPages() {
		return pages;
	}
	public void setPages(int pages) {
		this.pages = pages;
	}
}

在book的属性中 注入了值。
Person类:
package com.myapp.core.spel.annotation;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("person")
public class Person {
	   
	  @Value("#{book}")
	   private  Book  book;
	   
	  @Value("#{book.name}")
	   private  String  bookName;


	public void setBook(Book book) {
		this.book = book;
	}

	public Book getBook(){
		 return  this.book;
	}

	public  String   getBookName(){
		return  this.bookName;
	}

	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
}

测试类:
package com.myapp.core.spel.annotation;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

	public class MainTest { 
		public static void main(String[] args) {
			
			ApplicationContext  context  = new  ClassPathXmlApplicationContext("resource/spel.xml");
			
			Person  person =  (Person)context.getBean("person");
			
			System.out.println(person.getBookName());
			
			System.out.println(person.getBook().getPages());
		}
	}

测试结果:
三月 18, 2013 5:25:23 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@11e831: startup date [Mon Mar 18 17:25:23 CST 2013]; root of context hierarchy
三月 18, 2013 5:25:23 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [resource/spel.xml]
三月 18, 2013 5:25:24 下午 org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider registerDefaultFilters
INFO: JSR-330 'javax.inject.Named' annotation found and supported for component scanning
三月 18, 2013 5:25:24 下午 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor <init>
INFO: JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
三月 18, 2013 5:25:24 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@543360: defining beans [book,person,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy
Effective Java
300




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个基本的 web 应用程序可以按照以下步骤来实现: 1. 创建一个 Maven 项目,添加 SpringSpring MVC 和 MyBatis 的依赖。 2. 在 `web.xml` 文件配置 `DispatcherServlet`,并设置它的映射路径为 `/`。 3. 在 `dispatcher-servlet.xml` 文件配置 Spring MVC 的相关组件,如 `RequestMappingHandlerAdapter`、`ViewResolver` 等。 4. 在 `applicationContext.xml` 文件配置 MyBatis 的相关组件,如 `SqlSessionFactoryBean`、`MapperScannerConfigurer` 等。 5. 创建实体类和 DAO 接口,并在 `mapper.xml` 文件编写 SQL 语句。 6. 在 Service 层调用 DAO 层的方法,处理业务逻辑。 7. 在 Controller 使用 `@RequestMapping` 注解来处理 HTTP 请求,并调用 Service 层的方法处理业务逻辑。 8. 在 JSP 页面使用 EL 表达式来显示数据。 下面是一个简单的示例: 1. 添加依赖 ```xml <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.9.RELEASE</version> </dependency> <!-- Spring MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.9.RELEASE</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> ``` 2. 配置 `DispatcherServlet` ```xml <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ``` 3. 配置 Spring MVC 组件 ```xml <!-- 配置扫描包 --> <context:component-scan base-package="com.example.controller" /> <!-- 配置RequestMappingHandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="stringHttpMessageConverter" /> <ref bean="jacksonMessageConverter" /> </list> </property> </bean> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> ``` 4. 配置 MyBatis 组件 ```xml <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean> <!-- 配置 SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis-config.xml" /> </bean> <!-- 配置 MapperScannerConfigurer --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.dao" /> </bean> ``` 5. 编写实体类和 DAO 接口 ```java public class User { private int id; private String name; private int age; // getter/setter 略 } public interface UserDao { User selectUserById(int id); } ``` ```xml <mapper namespace="com.example.dao.UserDao"> <select id="selectUserById" parameterType="int" resultType="User"> select * from user where id = #{id} </select> </mapper> ``` 6. 编写 Service 层 ```java public interface UserService { User getUserById(int id); } @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public User getUserById(int id) { return userDao.selectUserById(id); } } ``` 7. 编写 Controller ```java @Controller public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/user/{id}", method = RequestMethod.GET) public String getUser(@PathVariable("id") int id, Model model) { User user = userService.getUserById(id); model.addAttribute("user", user); return "user"; } } ``` 8. 编写 JSP 页面 ```html <!DOCTYPE html> <html> <head> <title>User Profile</title> </head> <body> <h1>User Profile</h1> <table> <tr> <td>ID:</td> <td>${user.id}</td> </tr> <tr> <td>Name:</td> <td>${user.name}</td> </tr> <tr> <td>Age:</td> <td>${user.age}</td> </tr> </table> </body> </html> ``` 以上就是使用 MyBatis 加 SpringSpring MVC 写一个基本的 web 应用程序的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值