G

    科技2023-10-06  102

    一、属性注入

    1、有参构造注入 public class PropertyDemo1{ private String username; public PropertyDemo1(String username){ this.username=username; } public void test1(){ System.out.println(username); } } bean1.xml中配置: <bean id="demo" class="cn.itcast.property.PropertyDemo1"> <constructor-arg name="username" value="小王"></constructor-arg> </bean> 2、set注入 public class Book{ private String bookname; public void setBookname(String bookname){ this.bookname=bookname; } public void demobook(){ System.out.println("book..."+bookname); } } public class TestIOC{ @Test public void testUser(){ ApplicationContext context=ClassPathXmlApplicationContext("bean1.xml"); Book book=(Book)context.getBean("book"); book.demobook(); } } bean1.xml配置: <bean id="book" class="cn.itcast.property.Book"> <property name="bookname" value="ysy"></property> </bean> 3、注入对象类型属性: 1)在bean1.xml中配置: <bean id="userDao" class="cn.itcast.ioc.UserDao"></bean> <bean id="userService" class="cn.itcast.ioc.UserService"> <!--注入dao对象 现在不要写value 因为刚才使字符串现在是对象 name:service类里面属性名称 写ref属性:dao配置bean标签id值 --> <property name="userDao" ref="userDao" ></property> </bean> 2)UserService类 public class UserService{ private UserDao userDao; public void setUserDao(){ this.userDao=userDao; } public void add(){ System.out.println("service..."); userDao.add(); } } public class UserDao{ public void add(){ System.out.println("userDao..."); } } public class TestIOC{ @Test public void testUser(){ ApplicationContext context=ClassPathXmlApplicationContext("bean1.xml"); UserService userService=(UserService)context.getBean("userService"); userService.add(); } } 4、p名称空间注入: public class Person{ private String pname; public void setPname(String name){ this.pname=pname; } public void test1(){ System.out.println("person..."+pname); } } 在bean1.xml中配置: <bean id="person" class="cn.itcast.property.Person" p:pname="lucy"></bean> 5、注入复杂属性 public class Person{ private String pname; private String[] arrs; private List<String> list; private Map<String,String> map; private Properties properties; public void setArrs(String[] arrs){ this.arrs=arrs; } public void setList(List<String> list){ this.list=list; } public void setMap(Map<String,String> map){ this.map=map; } public void setProperties(Properties properties){ this.properties=properties; } public void setPname(String name){ this.pname=pname; } public void test1(){ System.out.println("person..."+pname); } } 在bean1.xml中配置 <bean id="person" class="cn.itcast.property.Person" > <!--数组--> <property name="arrs"> <list> <value>小王</value> <value>小礼</value> <value>小课</value> </list> </property> <!--list 集合--> <property name="list"> <list> <value>小奥</value> <value>小深</value> <value>小得</value> </list> </property> <!--map集合--> <property name="map"> <map> <entry key="aa" value="lucy">小奥</entry> <entry key="bb" value="mary">小深</entry> <entry key="cc" value="tom">小得</entry> </map> </property> <!--properties--> <property name="properties"> <pros> <prop key="driverClass">com.mysql.jdbc.Driver</prop> <prop key="username">root</prop> </pros> </property> </bean>

    二、spring的bean管理(注解方式)

    1、注解写法: @注解名称(属性名称=属性值) 2、注解适用范围: 类上面 方法上 属性上 3、spring注解开发准备: 1)导入jar包: (1)导入基本的jar包 commons-logging-1.2.jar log4j-1.2.16.jar spring-beans-4.2.4.RELEASE.jar spring-context-4.2.4.RELEASE.jar spring-core-4.2.4.RELEASE.jar spring-expression-4.2.4.RELEASE.jar (2)导入aop的jar包 spring-aop-4.2.4.RELEASE.jar 2)创建类 @Component(value="user") //<bean id="user" class=""/> public class User{ public void add(){ System.out.println("add..."); } } public class TestAnno{ @Test public void testUser(){ ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml"); User user=(User)context.getBean("user"); user.add(); } } 3)创建spring配置文件 引入约束 (1)第一天做ioc基本功能 引入约束beans (2)做spring的注解开发 引入新的context约束 <!--在配置文件只需要配置开启注解扫描: (1)到包里面扫描类、方法、属性上面是否有注解 (2)base-package :要配置注解的类所在的包名 --> <context :component-scan base-package="cn.itcast"></context:component-scan> 4)创建对象有四个注解: @Controller :web层 @Service :业务层 @Repository :持久层 @Component 4、spring注解方式注入属性: @Service(value="userService") public class UserService{ @Autowired private UserDao userDao; public void add(){ userDao.add(); } } @Service(value="userService") public class UserService{ //name属性值写注解创建dao对象value值 @Resource(name="userService"); private UserDao userDao; public void add(){ userDao.add(); } } @Seervice(value="userDao") public class UserDao{ public void add(){ System.out.println("userDao。。。"); } } 5、注解和配置文件混合使用: 1、创建对象使用配置文件实现 2、注入属性用注解实现 public class BookService{ @Resource(name="bookDao") private BookDao bookDao; @Resource(name="ordersDao") private OrdersDao ordersDao; public void add(){ System.out.println("service..."); } } public class OrdersDao{ public void buy(){ System.out.println("ordersdao..."); } } public class BookDao{ public void book(){ System.out.println("bookdao..."); } } public class TestAnno{ @Test public void testService(){ ApplicationContext context=new ClassPathXmlApplicationContext("bean2.xml"); BookService bookService=(BookService) context.getBean("bookService"); bookService.add(); } } bean2.xml: <!--开启注解扫描--> <context:component-scan base-package="cn.itcast"></context:component-scan> <!--创建对象--> <bean id="bookService" class="cn.itcast.xmlanno.BookService"></bean> <bean id="bookDao" class="cn.itcast.xmlanno.BookDao"></bean> <bean id="ordersDao" class="cn.itcast.xmlanno.OrdersDao"></bean>

    三、AOP

    1、AOP: 采取横向抽取机制 取代传统纵向继承体系 2、AOP操作术语 1、Pointcut(切入点): 2Advice( 3、spring的AOP操作: 1、在spring里面进行aop操作 s使用aspectjsshi实现 1)aspectj不是spring一部分 和spring一起使用进行aop操作 2)spring2.0以后x新增了对aspectj的支持 2、使用aspectj实现aop由两种方式 1)基于aspect的xml配置 2)基于aspect的注解 3、spring配置文件方式: 1、导入jar: aopalliance-1.0.jar aspectjweaver-1.8.7.jar spring-aop-4.2.4.RELEASE.jar spring-aspects-4.2.4.RELEASE.jar 2、创建spring核心配置文件、导入aop约束 bean3.xml: <!--配置对象--> <bean id="book" class="cn.itcast.aop.Book"></bean> <bean id="myBook" class="cn.itcast.aop.MyBook"></bean> <!--配置aop操作--> <aop:config> <!--2.1配置切入点 id:给切入点配置名字 自己取--> <aop:pointcut expression="execution(* cn.itcast.aop.Book.*(..))" id="pointcut1"/> <!--2.2配置切面 --> <aop:aspect ref="myBook"> <aop:before method="before1" pointcut-ref="pointcut1"/> <aop:after-returning method="after1" pointcut-ref="pointcut1"/> <aop:after-returning method="around1" pointcut-ref="pointcut1"/> </aop:aspect> </aop:config> 3、使用表达式配置切入点 (1execution(* cn.itcast.aop.Book.add(..)); (2)excution(*cn.itcast.aop.Book.*(..)); (3)excution(* *.*(..)); (4)excution(* save*(..)); public class Book{ public void add(){ System.out.println("add..."); } } public class MyBook{ public void befor1(){ System.out.println("前置增强.."); } public void after1(){ System.out.println("后置增强.."); } public void around1(ProceedingJoinPoint proceedingJoinPoint) throw Throwable{ System.out.println("方法之前..."); proceedingJoinPoint.proceed(); System.out.println("方法之后..."); } } public class TestAnno{ @Test public void testService(){ ApplicationContext context=new ClassPathXmlApplicationContext("bean3.xml"); Book book=(Book)context.getBean("book"); book.add(); } } 4、spring注解方式 1、创建类 public class Book{ public void add(){ System.out.println("add..."); } } @Aspect public class MyBook{ @Before(value="execution(* cn.itcast.aop.Book.*(..))") public void before1(){ System.out.println("before.."); } } public class TestAnno{ @Test public void testService(){ ApplicationContext context=new ClassPathXmlApplicationContext("bean3.xml"); Book book=(Book)context.getBean("book"); book.add(); } } 2、创建spring核心配置文件、导入aop约束 bean3.xml: <!--配置对象--> <bean id="book" class="cn.itcast.aop.Book"></bean> <bean id="myBook" class="cn.itcast.aop.MyBook"></bean> <!--开启aop操作--> <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

    四、spring的jdbcTemplate

    1、jdbcTemplate对jdbc进行封装 2、增加 删除 修改 查询: 1)导入jar包 spring-jdbc-4.2.4.RELEASE.jar spring-tx-4.2.4.RELEASE.jar 导入数据库驱动 2)创建对象 sh设置数据库信息 3)创建jdbcTemplate对象 设置数据源 4)调用jdbcTemplate模板方法 public class JdbcTemplateDemo1{ @Test public void add(){ //设置数据库信息 DriverManagerDateSource dataSource=new DriverManagerDateSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///spring_day03"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象s设置数据源 IdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); //调用jdbcTemplate方法实现操作 //创建sql语句 String sql="insert into user value(?,?)"; int rows=jdbcTemplate.update(sql,"lucy","250"); } @Test //修改 public void update(){ //设置数据库信息 DriverManagerDateSource dataSource=new DriverManagerDateSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///spring_day03"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象s设置数据源 IdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); //调用jdbcTemplate方法实现操作 //创建sql语句 String sql="update user set password=? where username=?"; int rows=jdbcTemplate.update(sql,"1314","lucy"); } @Test //删除 public void delete(){ //设置数据库信息 DriverManagerDateSource dataSource=new DriverManagerDateSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///spring_day03"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象s设置数据源 IdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); //调用jdbcTemplate方法实现操作 //创建sql语句 String sql="delete from user where username=?"; int rows=jdbcTemplate.update(sql,"lucy"); } @Test //查询表有多少条记录 public void testQuery(){ //设置数据库信息 DriverManagerDateSource dataSource=new DriverManagerDateSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///spring_day03"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象s设置数据源 IdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); //调用jdbcTemplate方法实现操作 //创建sql语句 String sql="select count(*) from user"; int count=jdbcTemplate.queryForObject(sql,Integer.class); } @Test //查询返回对象 public void testObject(){ //设置数据库信息 DriverManagerDateSource dataSource=new DriverManagerDateSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///spring_day03"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象s设置数据源 IdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); //调用jdbcTemplate方法实现操作 //创建sql语句 String sql="select * from user where username=?"; User user=jdbcTemplate.queryForObject(sql,new MyRowMapper(),"mary"); } }
    Processed: 0.011, SQL: 8