Spring 深入学习

一,Spring实现依赖注入的四种方式

       1.set注入:

<!--set注入-->
    <bean id="emp" class="com.example.ditest.Emp">
        <property name="ename" value="张三"></property>
        <property name="age" value="19"></property>
    </bean>

      2.构造函数注入 :

<!--构造注入 1.先把 daoimpl  注册进来  2.在serveice 写一个构造函数依赖注入-->
    <bean id="userMapper" class="com.example.mapper.SmsUserMapperImpl"></bean>

    <bean id="userService" class="com.example.service.UserServiceImpl">

        <constructor-arg ref="userMapper"></constructor-arg>
    </bean>

    3.p命名空间注入

<bean id="唯一标识" class="类的全路径"
	p:"属性1"="注入的值" p:"属性2"="注入的值"  />
<bean id="唯一标识" class="类的全路径"
	p:属性-ref="注入的Bean" />

3.注解注入 :

        注解方式将Bean的定义信息和Bean实现类结合在一起

        Spring提供的注解有:

1,@Component:实现Bean组件的定义
@Component
public class MyComponent {
  // 类的实现...
}
2,@Repository:用于标注DAO
@Repository("userDao")
<!-- 与在XML配置文件中编写<bean id="userDao" class="dao.impl.UserDaoImpl" />等效-->
public class UserDaoImpl implements UserDao {
	…
}
3,@Service:用于标注业务类
@Service("userService")
public class UserServiceImpl implements UserService {
    <!--使用@Autowired注解实现Bean的自动装配-->
	@Autowired
    <!--默认按类型匹配,可使用@Qualifier指定Bean的名称-->
	@Qualifier("userDao")
     <!--为dao属性注入名为userDao的Bean-->
	private UserDao dao;
	……
}
4,@Controller:用于标注控制器类
  1. 在目标类上添加@Controller注解,将其标记为一个控制器类:
@Controller
public class MyController {
  // 控制器的实现...
}
  1. 在Spring配置文件中配置组件扫描,以便Spring容器能够扫描并实例化@Controller注解标记的控制器:
<context:component-scan base-package="com.example" />

这里的com.example是目标类所在的包路径,用于指定需要扫描的组件所在的包。

  1. 在控制器类中定义处理请求的方法,可以使用@RequestMapping等注解来标注方法,指定请求的URL路径和请求方法:
@Controller
public class MyController {
  
  @RequestMapping("/hello")
  public String hello() {
    // 处理请求的逻辑...
    return "hello"; // 返回视图名
  }
}
  1. 创建Spring MVC的DispatcherServlet,并将其配置在web.xml文件中:
<servlet>
  <servlet-name>dispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>dispatcherServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

在配置中,将DispatcherServlet映射到根路径"/",并指定Spring配置文件的位置。

通过以上步骤,就可以将一个类标记为一个Spring MVC的控制器,并使用@RequestMapping等注解来定义处理请求的方法。当用户请求对应的URL时,Spring MVC会调用相应的方法进行处理,并返回指定的视图。

@Controller注解是Spring MVC中非常常用的注解之一,它将控制器类标记为一个特殊的组件,用于处理用户请求。

最重要的需要扫描包中注解标注的类:

<?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">
	<!– 扫描包中注解标注的类>
	<context:component-scan base-package="com.example"/>
</beans>

AspectJ

u面向切面的框架,它扩展了Java语言,定义了AOP语法,能够在编译期提供代码的织入

@AspectJ

uAspectJ 5新增的功能,使用JDK 5.0注解技术和正规的AspectJ切点表达式语言描述切面

Spring通过集成AspectJ框架实现了以注解的方式定义切面,使得配置文件的代码大大减少

u利用轻量级的字节码处理框架asm处理@AspectJ中所描述的方法参数名

注意事项:

使用@AspectJ,首先要保证所用的JDK5.0或以上版本

 二,不同数据类型注入

 

 <!--不同数据类型注入 -->
    <bean id="emp2" class="com.example.ditest.Emp">
        <!--普通属性-->
        <property name="ename" value="李四"></property>
        <!--空字符串和null-->
        <property name="age">
            <null/>
        </property>
        <!--小于号在XML文档中用来定义标签的开始,不能随便使用-->
        <!--解决方案一:使用xML实体来代替-->
        <property name="loves" value="&lt;&gt;"/>  <!--表示大于和小于-->

        <!-- 解决方案二:使用CDATA节 -->
        <property name="dept">
            <!-- CDATA中的C代表Character,是文本、字符的含义,CDATA就表示纯文本数据-->
            <!-- XML解析器看到CDATA节就知道这里是纯文本,就不会当作XML标签或属性来解析-->
            <!--所以CDATA节中写什么符号都随意-->
            <value><![CDATA[a < b]]></value>
        </property>

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值